당신이 실행하는 yarn install, 그리고 업데이트 한 의존성이 여전히 이전 빌드로 해결된다. 또는 당신의 랩탑이 설치가 잘되지만 CI가 무해한 lockfile 변경 후 suddenly 실패한다. 또는 Docker rebuilds가 끌어당겨지며, '캐시 사용'으로도 느려진다.
그것은 일반적으로 사람들이 찾는 때입니다. Yarn clear cache 그때 종종 사람들이 첫 번째 명령어를 붙여넣습니다.
그때 종종 그것이 작동합니다. 종종 그것이 문제를 해결하지 않습니다. 그 이유는 간단합니다: Yarn의 캐시 동작은 실행 중인 Yarn에 따라 크게 달라집니다. 그리고 Yarn Classic v1과 Yarn Berry v2+ 사이의 차이는 명령어와 문제 해결 전략을 모두 바꿀 정도입니다. Yarn Classic v1 그리고 Yarn Berry v2+ 가장 많은 가이드는 여기까지 멈칫합니다. 그것은 시작점입니다. 중요한 것은 캐시 범위, 프로젝트가 로컬 캐시를 사용하는지 공유 캐시를 사용하는지, 그리고 실제 문제가 캐시 자체인지 여부입니다. CI와 Docker에서 잘못된 캐싱 전략은 스테일 패키지 아카이브보다 더 많은 고통을 주는 경우가 많습니다.
목차 yarn cache clean빌드가 깨져서 Yarn 캐시가 범인일 수 있습니다.
__CAPGO_KEEP_0__
- __CAPGO_KEEP_1__
- Yarn 캐시를 비우는 시기와 이유
- Yarn Classic v1에서 캐시를 비우는 방법
- Yarn Berry v2+에서 캐시 관리
- CI/CD 및 Docker에서 Yarn 캐시 최적화
- 일반 Yarn 캐시 오류 해결
- Yarn 캐시를 정리하는 것에 대한 자주 묻는 질문
빌드가 깨졌는데 Yarn 캐시가 범인일 수 있습니다
이런 패턴이 익숙합니다. 패키지를 업데이트하고, 최신 변경 사항을_pull하고, 다시 설치를 실행합니다. 명령이 완료되지만, 앱은 여전히 이전 의존성을 포함하는 것처럼 행동합니다. 그런 다음 alguien suggests 캐시를 정리하고, 이제는 캐시 정리가 진짜 해결책인지 아니면 단순한 상상인지 궁금해집니다.
그것은 진짜 해결책일 수 있습니다. 그것은 또한 분산입니다.
캐시 문제는 일반적으로 몇 가지 예측 가능한 방법으로 나타납니다. 지역 패키지가 업데이트되지 않습니다. CI는 예상치 못한 것을 pull합니다. 새로운 branch는 main branch와 다르게 행동하지만, lockfile는 모든 것이 일치해야 한다고 말합니다. 만약 이미 더 광범위한 pipeline 불안정성을 추적하고 있다면, 캐시 디버깅을 더 체계적인 빌드 리뷰와 pair하는 것이 도움이 됩니다. 예를 들어, Capacitor CI/CD PIPELINE에서 빌드 실패를 해결하는 방법.
실용적인 규칙: Yarn 캐시를 초기화하는 것을 진단 도구로 대신 사용하는 것이 좋습니다.
Yarn 캐시 초기화 모델이 시간에 따라 변경되었습니다. 이전 프로젝트에서는 캐시가 전역으로 공유되었습니다. 새로운 프로젝트에서는 캐시 청소가 프로젝트에 국한되거나 전역이거나 둘 다 될 수 있습니다. 따라서 팀원에게 “Yarn 캐시를 초기화하세요”라고 말할 때 첫 번째 질문은 어느 Yarn?
이러한 이유로 캐시 초기화의 좋은 시작은 컨텍스트를 파악하는 것입니다. 로컬 머신 또는 CI 실행자. Yarn v1 또는 Berry. 공유 캐시 또는 프로젝트 캐시. 그런 다음 명령어는 정확해지며 희망적인 것이 아닙니다.
Yarn 캐시 초기화 시기 및 이유
Yarn 캐시 초기화는 특정 실패 모드가 있는 경우에만 의미가 있습니다. 가장 유용한 경우는 스테일 패키지 아티팩트를 제거하거나 다운로드 상태를 복구하거나 의도적으로 저장된 패키지를 삭제하여 Yarn이 다시 빌드할 수 있도록 하는 것입니다.

캐시 문제가 있는 증상
강력한 캐시 후보는 다음과 같습니다:
- 의존성 업데이트를 거부하는 경우 버전을 변경하거나 로컬 패키지를 재빌드했지만 설치는 여전히 이전 버전의 아티팩트를 가져옵니다.
- 설치가 상태에 의존하는 방식으로 실패합니다: 한 기계가 작동하는 반면 다른 기계는 작동하지 않으며 동일한 명령을 다시 실행하면 동일한 잘못된 결과를 재생산합니다.
- 로컬 디스크 공간을 회수해야 합니다: 개발자 머신에서 더 중요합니다. 단기적인 CI 환경에서는 그렇지 않습니다.
캐시 문제처럼 보이는 다른 상황도 있습니다. 예상치 못하게 잠금 파일이 변경되었습니다. 워크스페이스 설정이 일관되지 않습니다. 또는 Docker 빌드가 잘못된 레이어를 무효화합니다. 캐시를清리하는 것은 root cause를 해결하지 못합니다. 앱 빌드에 참여하는 팀은 자바스크립트 의존성, 플러그인 업데이트, 네이티브 도구와 같은 여러 요소를 관리해야 하므로 이 상황에 직면합니다. 이 맥락에서 __CAPGO_KEEP_0__ 프로젝트의 의존성을 관리하는 실용적인 개요는 가까이 두고 있어야 합니다. managing dependencies in Capacitor projects Yarn clear cache를 사용하지 않는 경우
__CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
__CAPGO_KEEP_0__
Yarn 캐시 클리어를 설치 문제의 첫 번째 대응으로 사용하지 마세요.
스태일 또는 손상된 패키지 상태의 증거가 있는 경우에만 사용하세요.
| 상황 | 더 좋은 첫 번째 움직임 |
|---|---|
| Lockfile drift | 변경 사항을 검토하고 일관되게 재설치하세요. yarn.lock 워크스페이스 해결 문제 |
| 워크스페이스 구성과 설치 동작을 확인하세요. | Docker 재빌드 느려짐 |
| 레이어 순서와 캐시 지속성을 검토하세요. | CI 불일치 |
| __CAPGO_KEEP_0__ | 실제로 복원되는 디렉토리를 확인하세요. |
환경이 잘못되어 설치가 잘못된 경우, 캐시를 지우기만 하면 다음 잘못된 설치가 더 느려집니다.
이 차이점은 시간을 절약합니다. 많은 시간을 소모하는 디버깅은 캐시를 마법의 리셋 버튼으로 다루는 데서 비롯됩니다.
Yarn Classic v1의 캐시 지우기
Yarn Classic은 많은 개발자가 여전히 모든 Yarn 버전이 어떻게 동작하는지 가정하는 방식으로 동작합니다. 사용자 디렉토리에 있는 전역 캐시 를 사용하고 yarn cache clean 공유 캐시를 지웁니다. Yarn Classic의 자체 문서는 그 방식으로 설명하고, 다음 yarn 또는 yarn install 캐시가 다시 채워집니다. the Yarn Classic cache CLI docs.

명령어에서 실제로 삭제하는 항목은 무엇인가요?
Yarn v1의 기본적인 청소 명령어는 다음과 같습니다:
yarn cache clean
이 명령어는 공유 캐시를 지우고, 현재 프로젝트만 지우는 것이 아닙니다. 여러 프로젝트를 같은 머신에서 작업할 경우, 이게 중요합니다. 다음에 프로젝트 중 하나에서 패키지를 설치할 때, 패키지를 다시 다운로드해야 할 수 있습니다.
공유 캐시 디자인은 Yarn v1이 프로젝트 간에 혼란스러운 동작을 일으키는 이유 중 하나입니다. 글로벌 캐시에 있는陈舊한 아티팩트는 다른 프로젝트에 영향을 줄 수 있습니다, 특히 로컬 패키지 개발이 포함된 경우.
Yarn Classic의 실용적인 순서는 다음과 같습니다:
- 먼저 청소 명령어를 실행하세요:
yarn cache clean - 필요한 경우 로컬 설치 아티팩트를 삭제하세요:
node_modules이때는 상태가 여전히 불일치할 때 다음 후보가 됩니다. - 스크래치에서 다시 설치하세요: 다시 실행하세요:
yarn install또한 의존성 그래프가 올바르게 해결되는지 확인하세요.
캐시 위치를 확인하는 방법은?
직접 캐시 디렉토리를 검사하거나 삭제하고 싶다면, Yarn Classic은 경로를 제공합니다.
yarn cache dir
이것은 CLI 명령어가 문제를 해결하지 않는 경우 또는 공유 또는 컨테이너화된 환경에서 캐시 디렉토리의 소유자 계정을 확인해야 할 때 유용합니다.
기존 도구 체인에서 로컬 설정을 예측하기 위해 작업 중이고, 이 walkthrough가 __CAPGO_KEEP_0__ __CAPGO_KEEP_1__ 단계별로 설치하는 방법에 대해 설명하는 경우, 이와 함께 깨끗한 의존성 리셋이 잘 어울립니다. installing Capacitor CLI step by step v1 프로젝트의 경우, 정신 모델은 간단합니다. 하나의 공유 캐시, 하나의 광범위한 삭제 명령, 다음 설치가 삭제한 것을 다시 채웁니다.
Yarn Berry v2+의 현대적인 캐시 관리
Yarn Berry는 대화 방식을 바꿨습니다. Yarn v1에 익숙한 경우, 가장 큰 조정은 캐시 삭제가 더 이상 단순히 '전체 저장소를 지우고 다시 시도'가 아니라는 것입니다. Berry는 더 정확한 제어를 지원하며, 대상이 무엇인지 알면 유용합니다.
Yarn Classic과 Yarn Berry 의존성 관리 시스템의 주요 차이점을 비교하는 차트.
Berry는 캐시 모델을 바꿨습니다.

Yarn Berry의 캐시 모델
Yarn Berry의 캐시 모델
그것이 왜 오래된 조언이 당신을 속일 수 있는지 이유입니다. v1에서 Yarn을 배운 팀원이 글로벌로 모든 것을 비우는 단일 명령어를 기대할 수 있습니다. Berry에서는 scope라는 개념을 생각해야 합니다. 범위.
모바일과 웹 PIPELINE에서 다르게 빌드 출력을 다루고 있다면, 동일한 범위의 사고 방식이 패키지 관리 외에도 적용됩니다. 빌드의 유형 비교는 환경 가정의 누출이 디버깅에 영향을 미친다는 유용한 nhắc임입니다. 빌드의 유형 이것은 환경 가정의 누출이 디버깅에 영향을 미친다는 유용한 nhắc임입니다.
이미지 설명을 간단하게 보려면 아래를 클릭하세요.
Berry에서 중요합니다.
Yarn의 최신 문서 yarn cache clean shared cache files 를 제거하는 명령어입니다.현재 Yarn 캐시 클린 명령어 참조에서 두 가지 중요한 switch를 노출합니다. the current Yarn cache clean command reference:
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 사용
Decision point: Berry에서 잘못된 범위 선택은 캐시 클린이 “nothing”처럼 보이게 하는 주요 이유 중 하나입니다.
실질적인 차이점은 Yarn Classic는 기본적으로 넓고 Berry는 설계 상 명확합니다.
Yarn 캐시 최적화 방법 CI/CD 및 Docker
CI/CD에서 Yarn 캐시를 무작위로 지우는 것은 일반적으로 실수입니다. 안전하게 보이지만, 속도와 반복 가능성을 위해 pipeline이 의존하는 상태를 제거하는 경우가 많습니다.
더 유용한 질문은 무엇입니까? 캐시하고 복원하는 정확히 무엇인지에 대한 질문입니다.

pipeline에서 캐시 지우기는 종종 잘못된 선택입니다.
CircleCI 토론에서 많은 팀이 실제 프로젝트에서 실패 패턴을 경험했습니다. 느린 설치 문제는 캐시 클린으로 해결되지 않았습니다. 이는 오래된 패키지 아카이브가 아니라, 캐시 디렉토리와 일치하지 않는 fetch 및 link 동작, 캐시된 세트의 경로가 누락된 것 때문입니다. node_modules CircleCI Yarn 캐싱 스레드에서 설명된 것과 같습니다. CircleCI Yarn 캐싱 스레드.
CI 시스템은 종종 느린 설치 또는 의존성 단계가 불안정한 증상 뒤에 숨겨진 원인을 숨기기 때문에 중요합니다. 개발자는 캐시를 지우고 다시 실행하지만 의미 있는 개선이 없을 때가 많습니다.
일반 pipeline 오류는 다음과 같습니다:
- 잘못된 디렉토리를 캐싱하는 것입니다: restore 단계가 완료되지만 Yarn은 복원된 위치를 사용하지 않습니다.
- 워크스페이스 경로를 무시하는 것입니다: 루트 의존성이 복원되면 여전히 워크스페이스 설치가 다시 링크되어야 합니다.
- Docker 레이어를 올바른 순서로 빌드하는 것입니다: 원본 code 복사본이 의존성 레이어를 무효화하여 패키지 설치가 매번 다시 실행됩니다.
CI에서 캐시 미스가 잘못된 구성으로 인한 것과 구분하기 어렵습니다.
자동화된 환경에서 모바일 앱을 빌드하는 경우, 배포 도구도 이 그림에 포함됩니다. 팀은 종종 GitHub Actions 또는 CircleCI와 배포 및 업데이트 시스템을 결합합니다. 그 더 넓은 워크플로우에서 하나의 옵션은 GitHub의 CI/CD 설정이 __CAPGO_KEEP_1__ 앱에 적용됩니다. Capgo’s CI/CD setup for Capacitor apps__CAPGO_KEEP_1__ 앱에 대한 __CAPGO_KEEP_0__의 CI/CD 설정
A 더 나은 CI 및 Docker 접근 방식
캐시 무효화는 감정적으로 하지 말고 의도적으로 하세요.
CI에 대해 신뢰할 수 있는 패턴은 다음과 같습니다.
- 캐시를 의존성 상태에 따라 기반으로 하세요. 캐시 키를
yarn.lock와 관련된 Yarn 설정 파일에 연결하세요. - 설치하기 전에 복원하세요: 복원된 경로가 Yarn이 해당 환경에서 사용하는 경로와 일치하는지 확인하세요.
- 일관적인 설치: 불변성 설정에서 설치 모드를 사용하세요. 이 모드는 잠금 파일의 정확성을 강제합니다.
- 실제 변경에 따라 무효화하세요: Yarn 버전 변경, 잠금 파일 업데이트, 캐시 경로 변경은 캐시 재생성을 위한 좋은 이유입니다.
도커의 원칙은 다음과 같습니다:
- 의존성 매니페스트를 복사하세요: 의존성 설치层를 애플리케이션 소스와 분리할 수 있는 경우에만 유지하세요.
- 이미지 빌드에서 불필요한 청소는 피하세요: 같은 빌드 내에서 캐시 삭제는 유용한 레이어 재사용을 제거합니다.
- 사용자 소유권에 명확하게 대하여야 합니다: 루트가 생성한 캐시 디렉토리는 나중에 비 루트 런타임 사용자에 의해 설치 실패를 유발할 수 있습니다.
단순한 결정 표를 사용하세요:
| 상황 | 보다 좋은 동작 yarn cache clean |
|---|---|
| CI 설치가 복원 후 느려집니다 | 캐시 경로와 복원 순서를 확인하세요 |
| 워크스페이스 재연결이 여전히 많이 발생합니다. | 관련 워크스페이스 설치 아티팩트를 캐시합니다. |
| 도커 재빌드는 설치를 다시 실행합니다. | 의존성 파일을 기준으로 레이어를 재정렬합니다. |
| 의존성 변경 후에 하나의 잘못된 빌드가 발생합니다. | 캐시 키를 invalidate하고 깨끗하게 다시 빌드합니다. |
CI에서 Yarn clear cache를 사용할 때, 스테일 캐시 콘텐츠가 실제 문제인 것을 확인한 후에만 사용하십시오. 대부분의 경우, 캐시 디자인을 개선하는 것이 더 좋은 해결책입니다.
Yarn 캐시 오류를 해결하는 방법
가장 frustraing한 캐시 버그는 캐시를 정리한 후에도 살아남는 버그입니다. 캐시를 정리하고 재설치한 후에도 Yarn이 이전 패키지를 다시 불러오면, 그때는 레지스트리가 잘못된 것인지, lockfile가 귀신에 의해 지배되고 있는 것인지를 가정하기 쉽습니다.
Yarn의 역사적인 문제에 대한 문서화된 이슈는 왜 그렇게 발생하는지 설명합니다. yarn cache clean <package-name> 개발자들이 cache/.tmp에서 오래된 복사본을 남길 수 있었는데, 이는 설치가 스테일 버전을 계속 사용할 때까지 임시 디렉토리가 삭제되거나 전체 정리 작업이 실행될 때까지 지속되었습니다. 이에 대한 자세한 내용은 Yarn의 문제에 대해 오래된 캐시 아티팩트에 대한 .tmp.
대상으로 한 정리도 여전히 오래된 패키지를 남길 수 있습니다
이것은 단순합니다. 부분 정리는 항상 충분하지 않습니다.
버전이 오래된 것인지 보편적인 손상인지 의심할 경우 사용하세요:
- 일단 명백한 확인부터 시작하세요: 예상 패키지 버전과 원본을 디버깅 중인지 확인하세요.
- 패키지별 정리에 너무 많은 신뢰를 하지 마세요: 대상으로 한 정리는 임시 아티팩트를 남길 수 있습니다.
- 캐시를 완전히 지우세요: 오래된 버전이 지속된다면 더 넓은 캐시 범위의 정리를 시도하세요.
- 임시 캐시 경로를 수동으로 확인하세요: 오래된 환경에서
cache/.tmp가장 필요한 부분일 수 있습니다.
패키지가 이전 버전의 아티팩트로 계속해서 해결되는 경우, 임시 캐시 파일은 실패한 대상 청소 후에 검사할 첫 번째 장소입니다.
권한 및 환경 문제가 캐시 문제처럼 보이는 경우
모든 "캐시 오류"가 캐시 콘텐츠 문제가 아니라는 것을 기억하세요.
Docker, 다중 사용자 Linux 시스템, 또는 CI 러너에서, 캐시 디렉토리가 프로세스에서 실행 중인 사용자와 다른 사용자에 의해 소유되고 있는 경우, 캐시를 지우면 권한 문제가 해결되지 않는 한 도움이 되지 않습니다. 이 경우, Yarn을 올바른 사용자로 실행하거나 디렉토리 소유권을 수정한 후 재설치하세요.
이러한 유형의 문제는 환경 간에 설치가 불일치로 실패하는 경우, 캐시가陈舊해 보이지만 실제로는 패키지 관련 문제가 아닙니다.
Yarn 캐시를 지우는 것에 대한 자주 묻는 질문
Yarn 캐시를 지우는 것이 안전한가요
일반 개발 환경에서 캐시를 지우는 것은 안전한 작업입니다. 캐시된 패키지 아티팩트를 삭제하는 것이 아니라, 애플리케이션 소스를 삭제하지 않습니다. Yarn은 다음 설치 시 필요한 것을 다시 다운로드하거나 재빌드할 수 있습니다.
캐시를 지우는 것은 시간을 절약하지 않습니다. 캐시를 지운 경우 다음 설치 시 일반적으로 다운로드하거나 재빌드해야 할 수 있습니다.
어떻게 자주 지우야 할까요
만약에 이유가 있다면.
정상적인 프로젝트에서 Yarn 캐시를 정기적으로 관리하는 것은 필요하지 않습니다. 캐시를 모든 워크플로우에 포함하는 습관을 들이면 로컬 설치가 느려지고 CI 캐싱이 손상될 수 있습니다. 의도적으로 캐시를 삭제하거나 의심스러운 설치가 발생하거나 디버깅 중에 캐시를 삭제할 때만 사용하세요.
이것은 프로덕션 빌드에 영향을 줄까요?
직접적으로는 영향을 주지 않습니다. 로컬 또는 CI 캐시를 삭제하면 커밋한 애플리케이션 code은 변경되지 않습니다.
그러나 캐시를 삭제하면 빌드 환경이 변경됩니다. 캐시된 설치 항목이 프로덕션 PIPELINE에 의존하는 경우 캐시를 삭제하면 빌드 속도가 느려지거나 숨겨진 재현성 문제가 노출될 수 있습니다. 디버깅 중에는 유용하지만 릴리스 스크립트에 캐시를 삭제하는 것은 이유가 있어야 합니다.
어떤 가장 간단한 실용적인 규칙을 따르면 좋을까요?
로컬 디버깅 시에는 Yarn이 사용하는 캐시 범위에서 시작하세요. CI 및 Docker의 경우 캐시 디자인을 수정하기 전에 캐시를 삭제하세요. 패키지별로 캐시를 삭제하지 못하는 경우 임시 파일 또는 환경 불일치로 인한 문제를 가정하고 Yarn이 깨진 것으로 가정하지 마세요.
팀이 __CAPGO_KEEP_0__ 앱을 배포하고 의존성 또는 빌드 문제로 인해 릴리스 PIPELINE이 더 깨끗하게 필요하다면
Capacitor Capgo JavaScript 및 자산 업데이트를 스토어 리뷰 대기 없이 배포하고 빌드 및 롤아웃 프로세스를 패키지 캐시 문제 해결과 분리할 수 있는 옵션입니다.