프로젝트가 쓰는 부품, 그 부품이 쓰는 부품이 재귀적으로 쌓입니다. 프로젝트 하나에 수백 MB에서 몇 GB까지 갑니다.
프로젝트가 열 개면 같은 부품이 열 벌 들어 있는 경우도 흔합니다. 개발 PC에서 개발 폴더가 수십 GB가 되는 주된 이유입니다.
기준은 "부품 폴더가 언제 만들어졌나"가 아니라 "직접 만든 소스 파일을 언제 마지막으로 고쳤나"입니다. node_modules 안 파일의 날짜는 작업한 날이 아니라 설치한 날이라, 신호로 못 씁니다.
소스를 몇 달째 안 고친 프로젝트부터 지우면 됩니다. 다시 필요해지면 npm install 한 번입니다.
PowerShell에서 특정 폴더 아래의 node_modules를 모두 찾으려면:
Get-ChildItem -Path . -Filter node_modules -Recurse -Directory -Depth 3 | Select-Object FullName, @{n="GB";e={"{0:N1}" -f ((Get-ChildItem $_.FullName -Recurse -File -EA 0 | Measure-Object Length -Sum).Sum/1GB)}}
먼저 목록만 보고, 지울 것을 고른 다음에 지우세요. -Recurse -Force로 한꺼번에 지우는 명령을 확인 없이 돌리지 마세요.
package.json이 있는지 봅니다. 있으면 그게 부품 목록이라 언제든 복원됩니다.
package-lock.json이나 yarn.lock, pnpm-lock.yaml도 남겨두세요. 이 파일이 있어야 다음 설치에서 같은 버전이 들어옵니다. 없으면 최신 버전이 들어와서 안 돌아가는 경우가 생깁니다.
드물게 node_modules 안의 파일을 직접 고쳐 쓰는 프로젝트가 있습니다. 그런 경우 지우면 그 수정이 날아가고, 버전 관리에도 안 잡혀서 확인이 어렵습니다.
npm은 프로젝트마다 부품을 따로 복사합니다. 프로젝트 열 개면 같은 부품이 열 벌입니다.
pnpm은 한 곳에 저장하고 각 프로젝트에서는 링크만 겁니다. 프로젝트가 많을수록 차이가 커집니다.
이미 쌓인 걸 정리한 다음에, 앞으로를 위해 바꿔볼 만합니다.
아니요. 소스 코드는 그대로입니다. 다시 설치하면 됩니다.
아니요. 그 파일이 있어야 다음 설치에서 같은 버전이 들어옵니다. 남겨두세요.
테라클린은 이 글에 나온 것들을 실제로 재서, 지워도 되는 것만 이유와 함께 보여줍니다. 파일은 기기를 떠나지 않고, 무료입니다.
무료로 받기