당신이 실행하는 yarn install, 그리고 최근 업데이트한 의존성을 업데이트한 후에도 여전히 이전 빌드에 대한 의존성이 해결된다. 또는 CI가 갑자기 오류를 발생시키는 이유는 laptop이 설치가 잘되지만 CI가 오류를 발생시키는 이유는 lockfile 변경이 무해한 이유로 발생한다. 또는 Docker rebuilds가 느려지는데, '캐시 사용'이라고 하지만 캐시가 사용되지 않는다.
그것이 일반적으로 사람들이 검색하는 단어입니다. Yarn clear cache 그것을 찾은 첫 번째 명령어를 붙여넣기한다.
때로는 그것이 작동한다. 때로는 그것이 아무런 영향을 미치지 않는다. 그 이유는 단순합니다: Yarn의 캐시 동작은 사용 중인 Yarn에 따라 크게 달라지며, Yarn의 차이점이 있습니다. Yarn Classic v1 and Yarn Berry v2+ 는 큰 변화로 오른 명령어와 올바른 문제 해결 전략을 바꾸기 충분합니다.
가이드 대부분은 yarn cache clean에서 멈추지만. 그게 다가 아닙니다. 중요한 것은 캐시 범위, 프로젝트가 로컬 캐시를 사용하는지 공유 캐시를 사용하는지, 그리고 실제 문제가 캐시 자체인지 여부입니다. CI와 Docker에서 잘못된 캐싱 전략은 스테일 패키지 아카이브보다 더 많은 고통을 주기도 합니다.
Table of Contents
- 빌드가 깨졌고 Yarn 캐시가 원인일 수 있습니다.
- 캐시를 지우려면 언제 그리고 왜 하는 것이 좋을까요?
- Yarn Classic v1에서 캐시를 지우는 방법
- Yarn Berry v2+에서 현대적인 캐시 관리
- CI/CD 및 Docker를 위한 Yarn 캐시 최적화
- Yarn 캐시 오류를 해결하는 방법
- 캐시 지우기를 위한 자주 묻는 질문
빌드가 깨졌고 Yarn 캐시가 범인일 수 있다
익숙한 패턴은 다음과 같습니다. 패키지를 업데이트하고, 최신 변경 사항을 pull하고, 다시 install을 실행합니다. 명령이 완료되지만, 앱은 이전 의존성을 포함하는 것처럼 동작합니다. alguien이 캐시를 지우라고 제안하면, 이제는 그게 진짜 해결책인지, 아니면 단순한 상상인지 궁금해집니다.
그것이 진짜 해결책일 수 있습니다. 그것이 단순한 상상일 수도 있습니다.
캐시 문제는 일반적으로 몇 가지 예측 가능한 방식으로 나타납니다. 지역 패키지가 업데이트되지 않습니다. CI가 예상치 못한 것을 pull합니다. 새로운 branch가 main branch와 다르게 동작합니다. lockfile는 모든 것이 일치해야 한다고 말하지만. 이미 더 광범위한 pipeline 불안정성을 추적하고 있다면, 캐시 디버깅을 시스템적인 빌드 리뷰와 pair하는 것이 도움이 됩니다. 예를 들어, Capacitor CI/CD pipeline에 대한 빌드 실패를 고치는 이 안내서.
실용적인 규칙: Yarn 캐시 지우기를 진단 도구로 다루세요. 유지보수 의식으로 다루지 마세요.
어려운 부분은 Yarn가 캐시 모델을 시간에 따라 변경했기 때문입니다. 이전 프로젝트에서는 캐시가 전역으로 공유되었습니다. 새로운 프로젝트에서는 캐시 정리 옵션에 따라 프로젝트에 국한된 캐시 정리가 가능합니다. 전역 캐시 정리가 가능합니다. 명령어 플래그에 따라 둘 다 가능합니다. 그래서 팀원 한 명이 "Yarn 캐시만 지우세요"라고 말하면, 첫 질문은 "어떻게 지울 것인가?"가 되어야 합니다. which Yarn?
Cache 고치는 데는 좋은 시작점이 무엇인지 먼저 파악하는 것이 중요합니다. 로컬 머신 또는 CI 실행자. Yarn v1 또는 Berry. 공유 캐시 또는 프로젝트 캐시. 그 정보를 알면 명령어는 정확해지며 희망보다는 명확해집니다.
Yarn 캐시를 지울 때는
Yarn 캐시를 지우는 것은 특정 실패 모드를 생각하고 있을 때 의미가 있습니다. 가장 유용한 경우는 stale 패키지 아티팩트를 제거하거나 다운로드 상태가 깨진 경우, 또는 의도적으로 저장된 패키지를 지우고 Yarn이 다시 처음부터 빌드하도록 하려는 경우입니다.

캐시 문제를 의심할 때 나타나는 증상
캐시 문제가 의심되는 몇 가지 사례가 있습니다.
- 의존성 업데이트를 거부하는 경우 버전을 변경하거나 로컬 패키지를 다시 빌드했지만, 설치는 여전히 이전 버전의 아티팩트를 가져옵니다.
- 상태가 있는 설치가 실패하는 경우 한 대의 머신이 작동하고 다른 하나가 작동하지 않으며, 동일한 명령어를 다시 실행하면 동일한 잘못된 결과를 재생산합니다.
- 로컬 디스크 공간을 회수해야 하는 경우 개발자 머신에서 CI 환경보다 더 중요합니다.
캐시 문제처럼 보이는 다른 상황도 있습니다. managing dependencies in Capacitor projects 앱 빌드에 종사하는 팀은 자주 native tooling, JavaScript 의존성, 플러그인 업데이트와 같은 여러 요소를 관리해야 하며, 이 경우 __CAPGO_KEEP_0__ 프로젝트의 의존성 관리에 대한 실용적인 개요는 가깝게 유지하는 것이 가치 있습니다.
패키지 문제를 해결하는 대신 broader 머신 클린업 목표를 가진 경우 시스템 수준의 가이드도 도움이 될 수 있습니다. Mac 개발자들은 Mac 사용자들을 위한 앱 캐시를 정리하고 싶을 때 패키지 매니저가 저장소의 전체 그림에만 한 부분인 것을 발견합니다.
Yarn clear cache를 사용할 때는
Yarn clear cache를 설치 문제의 첫 번째 대응으로 사용하지 마십시오.
Yarn clear cache를 사용할 때는 캐시가陈舊하거나 손상된 패키지 상태가 있는 증거가 있는 경우에만 사용하십시오.
| 문제의 원인이 더 가능성이 높다면 | Situation |
|---|---|
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_1__ yarn.lock __CAPGO_KEEP_2__ |
| __CAPGO_KEEP_3__ | __CAPGO_KEEP_4__ |
| __CAPGO_KEEP_5__ | __CAPGO_KEEP_6__ |
| __CAPGO_KEEP_7__ | __CAPGO_KEEP_8__ |
__CAPGO_KEEP_9__
__CAPGO_KEEP_10__
__CAPGO_KEEP_11__
__CAPGO_KEEP_0__ global cache user directory yarn cache clean clears that shared cache yarn Yarn Classic의 문서에서 yarn install dusty, vintage computer keyboard the Yarn Classic cache CLI docs.

That command wipes the shared cache, not just the current project.
이 공유 캐시 설계는 Yarn v1이 프로젝트 간에 혼란스러운 동작을 일으키는 이유입니다.
yarn cache clean
A stale artifact in the global cache can survive long enough to affect different repos, especially when local package development is involved.
Yarn Classic cache __CAPGO_KEEP_0__ docs
실용적인 Yarn Classic 시퀀스는 일반적으로 다음과 같은 형태를 띈다:
- 먼저 clean 명령어를 실행하세요:
yarn cache clean - 필요한 경우 로컬 설치 아티팩트를 삭제하세요:
node_modules상태가 여전히 불일치할 때는 종종 다음 후보가 됩니다. - 스크래치에서 다시 설치하세요: 다시 실행하고 의존성 그래프가 올바르게 해결되는지 확인하세요.
yarn install캐시 위치를 확인하는 방법
직접 캐시 디렉토리를 검사하거나 삭제하고 싶을 때, Yarn Classic에서는 경로를 제공합니다.
이미지나 컨테이너 환경에서 공유된 캐시 디렉토리의 소유자 계정을 확인하거나 __CAPGO_KEEP_0__ 명령어가 문제를 해결하지 않는 경우에 유용합니다.
yarn cache dir
오래된 도구 체인에서 로컬 설정을 예측 가능하게 유지하고 싶다면, __CAPGO_KEEP_1__를 CLI 단계별로 설치하는 방법에 대한_walkthrough_를 참조하세요.
다시 실행하고 의존성 그래프가 올바르게 해결되는지 확인하세요. installing Capacitor CLI step by step __CAPGO_KEEP_0__
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__

__CAPGO_KEEP_0__
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__ __CAPGO_KEEP_0__.
__CAPGO_KEEP_0__ __CAPGO_KEEP_0__ 환경 가정들이 디버깅 과정에 유출되는 경향이 있음을 기억하는 유용한 방법입니다.
명령어 세부 사항 전에 간단한 시각적 설명입니다.
Berry에서 중요하게 여기는 명령어
Modern Yarn 문서 yarn cache clean Berry에서 제거하는 공유 캐시 파일, 그리고 현재 Yarn 캐시 클린 명령어 참조에서 두 가지 중요한 switch를 노출합니다.:
yarn cache cleanYarn의 공유 캐시 파일을 제거합니다.yarn cache clean --mirror전역 캐시를 지우기만 하며 프로젝트 로컬 캐시를 지우지 않습니다.yarn cache clean --all전역 캐시 파일과 현재 프로젝트의 로컬 캐시 파일을 모두 제거합니다.
Yarn v1보다 더 의도적인 워크플로를 제공합니다.
| 목표 | 명령 |
|---|---|
| 기본 공유 캐시 범위 청소 | yarn cache clean |
| 전역 리플리케이션 캐시를 대상으로 | yarn cache clean --mirror |
| 로컬 및 전역 캐시 파일에 대한 전체 리셋 | yarn cache clean --all |
사용 --all 프로젝트의 모든 것을 삭제하고 완전히 다시 시작하고 싶을 때 사용하세요. --mirror 전역 캐시层에서 문제가 있는 경우 모든 것을 삭제하고 싶지 않다면 사용하세요.
결정 지점: Berry에서 잘못된 범위 선택은 캐시 청소가 “nothing”처럼 보이도록 하는 주요 이유 중 하나입니다.
실용적인 차이입니다. Yarn Classic은 기본적으로 넓습니다. Berry는 설계 상 명확합니다.
CI/CD 및 Docker를 위한 Yarn 캐시 최적화 방법
CI/CD에서 Yarn 캐시를 무심코 지우는 것은 일반적으로 실수입니다.
CI/CD pipeline의 속도와 반복성을 위해 의존하는 상태를 제거하는 것처럼 보이지만, 종종 캐시를 지우는 것이 실제로 문제를 해결하지 못합니다. 정확히 무엇을 캐시하고, 정확히 무엇을 복원하는지에 대한 질문이 더 유용합니다.

pipeline에서 캐시를 지우는 것은 종종 잘못된 선택입니다.
CircleCI 토론에서 여러 팀이 실제 프로젝트에서 겪는 실패 패턴이 캡처되었습니다. 느린 설치가 캐시 클린업으로 해결되지 않은 것은 캐시된 패키지 아카이브가陈舊하지 않기 때문이었습니다. 실제로는 fetch 및 link 동작, 캐시 디렉토리 불일치, 캐시된 세트에서 누락된 경로가 문제였습니다. node_modules CircleCI Yarn 캐싱 스레드에서 설명한 것과 같습니다. 그것이 중요합니다. CI 시스템은 종종 “설치가 느리다” 또는 “의존성 단계가 불안정하다”라는 한 가지 추상적인 증상 뒤에 숨겨진 실제 원인을 숨깁니다. 개발자는 캐시를 지우고 다시 실행하지만, 의미 있는 개선이 없을 때가 많습니다..
일반적인 pipeline 실수에는 다음과 같은 것들이 포함됩니다.
wrong directory를 캐시합니다.
- restore 단계가 완료되지만, Yarn은 복원된 위치를 사용하지 않습니다. wrong restore step을 사용합니다.
- 워크스페이스 경로를 무시합니다: 루트 의존성은 워크스페이스 설치가 완료될 때까지 다시 연결해야 하는 작업이 남아 있을 수 있습니다.
- 도커 레이어를 올바른 순서로 빌드하지 않습니다: 원본 code 복사본이 의존성 레이어를 무효화하기 때문에 패키지 설치가 매번 다시 실행됩니다.
CI에서 캐시 미스가 잘못된 구성으로 인해 발생하면 캐시가 손상된 것처럼 보입니다.
자동화된 환경에서 모바일 앱을 빌드하는 경우, 릴리즈 툴링도 이곳에 들어옵니다. 팀은 종종 GitHub Actions 또는 CircleCI를 배포 및 업데이트 시스템과 결합합니다. 그 보다 광범위한 워크플로우에서 하나의 옵션은 Capgo의 CI/CD 설정을 Capacitor 앱에 적용하는 것입니다패키지 매니저 및 빌드 캐시 전략과 함께.
CI와 도커에 대한 더 나은 접근 방식
캐시 무효화는 감정적으로 아니라 의도적으로 사용해야 합니다.
CI의 신뢰할 수 있는 패턴은 다음과 같습니다:
- 의존성 상태에 따라 캐시를 기반으로합니다. 캐시 키를
yarn.lock관련 Yarn 설정 파일과 함께 연결합니다. - 설치하기 전에 복원하세요: 복원된 경로가 해당 환경에서 Yarn이 사용할 경로와 일치하는지 확인하세요.
- 일관되게 설치하세요: 불변 설정에서, 올바른 lockfile를 강제하는 설치 모드를 사용하세요.
- 실제 변경에 따라 invalidate하세요: Yarn 버전 변경, lockfile 업데이트 또는 캐시 경로 변경은 캐시 재생성을 위한 좋은 이유입니다.
Docker의 원칙은 다음과 같습니다:
- 의존성 매니페스트를 먼저 복사하세요: 의존성 설치层를 애플리케이션 소스와 분리할 수 있는 경우에는 분리하세요.
- 이미지 빌드 시 불필요한 청소 작업을 피하세요. __CAPGO_KEEP_0__
- __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
__CAPGO_KEEP_0__
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__ yarn cache clean |
|---|---|
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__ |
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__ |
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__ |
| One bad build after dependency change | 캐시를 invalidate하고 다시 깨끗하게 빌드하세요 |
CI에서만 Yarn clear cache를 사용하세요. 캐시가 오래된 것이 실제 문제인 경우에만 캐시를 지웁니다. 대부분의 경우, 캐시 디자인을 개선하는 것이 더 좋은 해결책입니다.
Yarn 캐시 오류를 해결하는 방법
캐시를 지우고도 살아남는 가장 짜증나는 캐시 버그는 무엇일까요? 개발자가 캐시를 지우고 다시 설치했지만 Yarn이 여전히 이전 버전의 패키지를 불러오면 그럴 수 있습니다. 그때는 레지스트리가 잘못된 것인지, lockfile이 귀신에 의해 지배되고 있는 것인 줄 알게 됩니다.
Yarn에서 문서화된 역사적인 문제는 왜 그럴 수 있는지 설명합니다. 개발자들은 yarn cache clean <package-name> 가 캐시를 지우고 나면 이전 버전의 복사본이 남아있을 수 있다고 보고했습니다. 그 결과, 설치 중에 오래된 버전을 계속 사용할 수 있었고, 임시 디렉토리가 삭제되거나 전체 청소가 실행될 때까지 그 버전을 사용했습니다. 이에 대한 자세한 내용은 cache/.tmp에서 설명한 Yarn의 오래된 캐시 항목에 대한 문제에 대해discussed합니다. 캐시를 지우고도 여전히 오래된 패키지를 남겨두는 경우 .tmp.
캐시를 지우고도 여전히 오래된 패키지를 남겨두는 경우
캐시를 지우고도 여전히 오래된 패키지를 남겨두는 경우 캐시를 지우고도 여전히 오래된 패키지를 남겨두는 경우
버전의 낡음이 아니라 광범위한 훼손에 의심된다면 이 순서를 사용하십시오:
- 명백한 확인부터 시작하십시오: 기대하는 패키지 버전과 소스에 디버깅 중인지 확인하십시오.
- 패키지별로 청소에 너무 많은 신뢰를 하지 마십시오: 대상화된 청소는 때때로 임시 파일을 남길 수 있습니다.
- 전체 캐시 삭제로 승격하십시오: 낡은 버전이 지속된다면 더 광범위한 캐시 범위로 청소하십시오.
- 임시 캐시 경로를 수동으로 검사하십시오: OLDER SETUP에서
cache/.tmp일부 경우,
패키지가 오래된 아티팩트로 해결될 때 임시 캐시 파일을 먼저 검사하는 것이 좋습니다.
권한 및 환경 문제가 캐시 문제처럼 보인다면
Not every “cache error” is a cache-content problem.
Docker, multi-user Linux 시스템, 또는 CI 실행자에서, 캐시 디렉토리가 프로세스 실행 중인 사용자와 다른 사용자에 의해 소유되고 있는 경우, 캐시 디렉토리의 소유권 문제를 해결하지 않는 한 캐시를 지우는 것은 도움이 되지 않습니다. 소유권 문제를 해결하거나 Yarn을 올바른 사용자로 실행하는 것이 실질적인 해결책입니다.
그런 종류의 문제는 환경에 따라 설치가 실패하는 경우가 많아, 캐시가 오래된 것처럼 보입니다. 해결책은 패키지 관련이 아닌 운영 방식입니다.
캐시를 지울 때 자주 묻는 질문
캐시를 지울 때 안전한가요
정상적인 개발 환경에서 캐시를 지우는 것은 안전한 작업입니다. 캐시된 패키지 아티팩트를 삭제하는 것이 아니라, 애플리케이션 소스를 삭제하지 않습니다. Yarn은 다음 설치 시 필요한 것을 다시 다운로드하거나 재빌드할 수 있습니다.
캐시를 지우는 데 드는 시간의 비용이 있습니다. 캐시를 지운 경우 다음 설치 시 일반적으로 다운로드하거나 재빌드해야 할 패키지가 많아질 수 있습니다.
어떻게 자주 캐시를 지울 것인가
만약 이유가 있다면만 캐시를 지울 것입니다.
정상적인 프로젝트에서 캐시를 지우는 것은 일상적인 유지보수 작업이 아닙니다. 캐시를 지우는 것을 모든 워크플로우에 포함시키면, 로컬 설치 시간이 느려지고 CI 캐싱이 손상될 수 있습니다. 캐시를 지울 때는 의도적으로 디버깅 중인 경우나 의존성이 오래된 경우, 설치가 손상된 경우에만 사용하세요.
생산 빌드에 영향을 줄까요
직접적으로는 영향을 주지 않습니다. 로컬 또는 CI 캐시를 지우는 것은 커밋한 애플리케이션 code에 영향을 주지 않습니다.
__CAPGO_KEEP_0__ 환경을 준비하는 빌드 환경이 바뀌는 것은 무엇을 바꾸는지에 대한 것입니다. 캐시된 설치 아티팩트에 의존하는 프로덕션 PIPELINE이 있다면, 캐시를 지우면 빌드 속도가 느려지거나 숨겨진 재현성 문제를 노출할 수 있습니다. 이는 디버깅 중에 유용하지만, 이유가 없이 릴리즈 스크립트에 넣으면 안 됩니다.
빌드 프로세스에서 가장 간단한 실용적인 규칙은 무엇입니까?
문제에 맞는 가장 작은 청소 작업을 사용하십시오.
로컬 디버깅을 위해, Yarn이 사용하는 프로젝트의 캐시 범위에서 시작하십시오. CI와 Docker의 경우, 캐시 디자인을 고치기 전에 캐시를 지우지 마십시오. 패키지별로 청소 작업이 작동하지 않으면, 임시 아티팩트나 환경 불일치로 생각하십시오. Yarn이 깨진 것은 아닙니다.
Capacitor 앱을 배포하는 팀이 의존성 또는 빌드 문제로 인해 더 깨끗한 릴리즈 PIPELINE이 필요하다면 Capgo 스토어 리뷰를 기다리지 않고 자바스크립트 및 자산 업데이트를 전달하는 방법은 무엇입니까? 빌드 및 롤아웃 프로세스를 패키지 캐시 디버깅과 분리하는 방법은 무엇입니까?