Mac개발자읽는 데 2분

Mac에서 Homebrew, npm, pip, Gradle, CocoaPods 및 Docker 캐시를 지우는 방법

패키지 관리자와 개발 도구는 캐시를 크게 유지합니다. Homebrew, npm, Yarn, pnpm, pip, uv, Gradle, CocoaPods, Dart, Cargo 및 Docker를 안전하게 정리하는 공식 명령은 다음과 같습니다.

업데이트됨 · 작성: spacerecover 팀

모든 패키지 관리자는 다운로드한 항목의 로컬 캐시를 유지하며 대부분 자체적으로 정리하지 않습니다. 몇 년간의 프로젝트를 통해 이러한 캐시는 쉽게 수십 기가바이트에 도달할 수 있습니다. 좋은 소식은 도구가 필요한 것을 다시 다운로드하기 때문에 거의 모든 항목을 안전하게 지울 수 있다는 것입니다.

시작하기 전에: 빌드, 설치 및 개발 서버 실행을 중지하세요. 도구가 캐시를 사용하는 동안 캐시를 지우면 혼란스러운 오류가 발생할 수 있습니다.

공간이 어디에 있는지 확인하세요

이 읽기 전용 명령은 일반 캐시 폴더의 크기를 표시합니다.

du -sh ~/Library/Caches/Homebrew ~/.npm ~/Library/pnpm ~/Library/Caches/pip ~/Library/Caches/uv ~/.gradle/caches ~/Library/Caches/CocoaPods ~/.pub-cache ~/.cargo/registry 2>/dev/null

존재하지 않는 폴더는 건너뜁니다.

Homebrew

Homebrew는 다운로드한 bottle(미리 빌드된 패키지)과 formula로 설치한 패키지의 이전 버전을 보관합니다. 다음 명령으로 정리하세요.

brew cleanup

오래된 다운로드뿐만 아니라 캐시된 다운로드도 모두 제거하려면 다음 단계를 따르세요.

brew cleanup --prune=all

brew cleanup -n을 먼저 실행하여 제거하지 않고 무엇이 제거되는지 확인하세요.

npm, Yarn 및 pnpm

npm cache clean --force
yarn cache clean
pnpm store prune

npm cache verify은 모든 것을 지우지 않고 캐시를 확인하고 정리합니다. pnpm store prune은 어떤 프로젝트에서도 참조하지 않는 패키지를 제거합니다. 이는 프로젝트 간에 공유되는 pnpm 저장소에 안전합니다.

이전 node_modules 폴더

각 JavaScript 프로젝트에는 종종 수백 메가바이트에 달하는 자체 node_modules이 있습니다. 아무것도 삭제하지 않고 프로젝트 폴더에 나열하려면:

find ~/code -name node_modules -type d -prune -exec du -sh {} + 2>/dev/null

현재 작업하고 있지 않은 프로젝트에서 node_modules을(를) 삭제하세요. npm install을 실행하면 다시 나타납니다.

파이썬: pip와 uv

pip cache purge
uv cache clean

uv cache prune은 사용하지 않는 항목만 제거하는 보다 부드러운 옵션입니다. 이전 프로젝트의 가상 환경(.venv 폴더)도 규모가 클 수 있으며 요구 사항 파일에서 다시 생성될 수 있습니다.

Gradle

Gradle의 종속성 캐시는 ~/.gradle/caches에 있습니다. 실행 중인 데몬을 중지한 후 삭제합니다.

./gradlew --stop
rm -rf ~/.gradle/caches

Gradle은 다음 빌드에서 종속성을 다시 다운로드합니다. Android Studio 사용자는 설정 > 언어 및 프레임워크 > Android SDK에서 이전 Android SDK 플랫폼과 시스템 이미지를 제거하고 장치 관리자에서 이전 에뮬레이터를 제거할 수도 있습니다.

CocoaPods

pod cache clean --all

다운로드한 CocoaPods 패키지가 삭제됩니다. 프로젝트의 Pods 폴더와 Podfile.lock는 영향을 받지 않습니다.

Dart 및 Flutter

dart pub cache clean

이렇게 하면 다시 활성화해야 하는 전역적으로 활성화된 도구를 포함하여 pub 캐시의 모든 항목이 제거됩니다. 프로젝트에서 flutter pub get을 실행하면 해당 패키지를 다시 가져옵니다. 프로젝트의 flutter clean은 빌드 출력을 제거합니다.

Rust (Cargo)

작업하지 않는 프로젝트에서 cargo clean을 실행하여 Rust 프로젝트에서 용량이 가장 큰 경우가 많은 target 폴더를 제거하세요. ~/.cargo/registry의 레지스트리 캐시는 삭제될 수 있으며 다시 다운로드됩니다.

Docker

Docker Desktop은 이미지, 컨테이너, 볼륨 및 빌드 캐시를 단일 디스크 이미지에 저장하므로 Finder에서 파일을 삭제해도 저장 공간이 줄어들지 않습니다.

  1. 무엇이 공간을 사용하고 있는지 확인하세요.

    docker system df
    
  2. 중지된 컨테이너, 사용하지 않는 네트워크, dangling 이미지(태그가 없는 이미지) 및 빌드 캐시를 제거합니다.

    docker system prune
    

    컨테이너가 사용하지 않는 모든 이미지도 제거하려면 -a를 추가하세요. 삭제해도 되는지 확신하지 못한다면 --volumes를 추가하지 마세요. 볼륨에는 로컬 데이터베이스 같은 영구 데이터가 저장됩니다.

  3. Docker Desktop > 설정 > 리소스에서 디스크 이미지 크기를 확인하고 제한할 수 있습니다.

Xcode

Xcode의 DerivedData, 아카이브, 장치 지원 파일 및 시뮬레이터는 Xcode 저장소 지우기에 대한 별도의 가이드에서 다룹니다.

자주 묻는 질문

npm 캐시를 지워도 안전합니까?

예. npm은 필요에 따라 패키지를 다시 다운로드합니다. 실행 중인 설치를 먼저 중지하세요. 귀하의 프로젝트와 해당 node_modules 폴더는 영향을 받지 않습니다.

docker system prune이 내 데이터를 삭제합니까?

기본적으로 중지된 컨테이너, 사용되지 않는 네트워크, dangling 이미지(태그가 없는 이미지) 및 빌드 캐시는 제거하지만 볼륨은 제거하지 않습니다. 데이터베이스를 자주 보유하는 볼륨은 --volumes을 추가하는 경우에만 제거됩니다.

~/.gradle/캐시를 삭제할 수 있나요?

예, Gradle 데몬을 중지한 후입니다. Gradle은 다음 빌드에서 종속성을 다시 다운로드하므로 시간과 대역폭이 필요합니다.

앱이 대신 정리해 주길 원하시나요?

spacerecover는 Homebrew, npm, Gradle, CocoaPods, pip, uv, Swift 패키지 및 Dart 캐시와 Xcode 빌드 출력 및 Docker 저장 공간을 찾고 각각이 무엇을 다시 빌드하는지 설명합니다. 포괄적 정리 명령을 실행하지 않으며 코드 폴더의 프로젝트가 보호됩니다.

출처 및 추가 자료

계속하세요