package.json에없는 패키지의 node_modules 폴더를 청소하는 방법은 무엇입니까?


338

내가 함께 프로젝트 패키지를 설치하는 가정 npm install에 그 모습 package.json모듈을 설치하기. 잠시 후 특정 모듈이 필요하지 않고에서 의존성을 제거한다는 것을 알았습니다 package.json. 그런 다음 package.json더 이상 필요하지 않은 모듈을 제거하고 다른 모듈은 다른 모듈 로 대체합니다.

이제 node_modules폴더 를 정리하여 나열된 모듈 만 package.json유지하고 나머지는 가야합니다 npm clean. 수동으로 제거 할 수는 있지만 설탕 기능을 사용할 준비가 되었으면합니다.

답변:


407

당신이 찾고 있다고 생각합니다 npm prune

npm prune [<name> [<name ...]]

이 명령은 "익스트림"패키지를 제거합니다. 패키지 이름이 제공되면 제공된 이름 중 하나와 일치하는 패키지 만 제거됩니다.

외부 패키지는 상위 패키지의 종속성 목록에 나열되지 않은 패키지입니다.

문서를 참조하십시오 : https://docs.npmjs.com/cli/prune


1
내가 아는 한, 새로운 NPM 버전에서 모든 종속성은 루트 node_modules폴더에 있으며 이전과는 달리 각 종속성에 자체 node_modules폴더 에 자체 종속성이 설치되어있는 곳이 아닙니다 . 그래서 npm prune이것을 고려합니까? 이러한 깊은 의존성은 package.json프로젝트 의 메인 에 쓰여지지 않았기 때문에 .. 자두는 재귀 적으로보아야합니다.
vsync

2
@vsync 복제 감소는 npm dedupe docs.npmjs.com/cli/dedupe 명령으로 수행 됩니다. 종속성을 트리 위로 이동하여 노드 트리를 단순화하려고 시도합니다.
knaos

NPM 정리가 회사 리포지토리에 문제가 생겼을 때 일반적으로 방해되는 사항을 삭제하지 못하는 것을 보았습니다. 그런 다음 rm-rf해야합니다. 가 있다면 명령 "멀리 다음 reget 모든 것을 모든 게 타격 일가는 모두"그것은 좋은 일 것입니다
ggb667

210

node_modules / 폴더를 제거한 다음 package.json에서 종속성을 다시 설치할 수 있습니다.

rm -rf node_modules/
npm install

현재 폴더에 설치된 모든 패키지가 지워지고 package.json의 종속성 만 설치됩니다. 종속성이 이전에 설치된 경우 npm은 캐시 된 버전을 사용하려고 시도하여 종속성을 두 번 다운로드하지 않습니다.


4
예,이 방법을 사용할 수 있다는 것을 알고 있지만 더 이상 우아한 해결책이없는 이유가 궁금합니다.
Sergei Basharov

폴더를 삭제하는 것 외에 node_modules를 삭제하는 npm 명령이 실제로 없습니까?
Anders

4
Windows 플랫폼에서 탐색기 또는 명령 행을 통해 node_modules를 삭제하는 중에 실패합니다 (일부 모듈의 경로가 256보다 길기 때문에). 더 깨끗한 방식으로 수행하려면 npm 명령이 있어야합니다.
라비 쿠마

9
또는 rmdir node_modules /s /qWindows에서 사용 합니다. superuser.com/a/179661/440976
Wédney Yuri

5
나는이 대답은 매우 중요한 점을 누락 생각 : 당신은 트래픽에 의해 제약되는 경우 (당신이 당 메가 바이트 지불 모바일과 같은 연결 비싼이 즉) 당신은 모듈의 많은이가 당신을 요할 수있을 그동안, prune옵션 인터넷에 연결되어 있어야합니다.
Ivan Kolmychek

102

폴더 중첩으로 인해 이름이 너무 길어서 Windows에서 폴더를 삭제할 수 없습니다. 이를 해결하려면 RimRaf를 설치하십시오.

npm install rimraf -g

rimraf node_modules

8
아니면 그냥rm -rf node_modules
kappaallday

16
rm -rf node_modules창문에서는 작동하지 않습니다. 이 솔루션보기 : superuser.com/a/179661/440976
Wédney Yuri

1
win7 x64 rimraf는 PowerShell을 통해 훌륭하게 작동했습니다. thanks
gorelative

64 비트 CMD를 통해 윈도우 10에 대한 최적의 솔루션
매트 크롬웰

윈도우 10 그러나 rimraf에 나를 위해 RF RM은 node_modules didnt 한 일이 나를 위해 일한
ssmsnet

24

간단한 실행

rm -r node_modules

실제로이 폴더를 사용하여 모든 폴더를 삭제할 수 있습니다.

rm -r AnyFolderWhichIsNotDeletableFromShiftDeleteOrDelete같습니다 .

단지 열 gitbash 폴더의 루트로 이동하고 다음 명령을 실행

이것이 도움이되기를 바랍니다.


2
작동하지 않으면 "permission denied"오류가 발생합니다 (gitbash 사용)
drake035

3
관리자 모드에서 gitbash를 엽니 다. 도움이 될 것 같아요. 또는 폴더 권한 수준 설정 변경
Ajay Kotnala

3
모든 패키지 가 삭제 됩니다. OP는 명확하게 "package.json에 나열된 모듈 만 유지되도록 node_modules 폴더를 정리하고 싶습니다"라고 말합니다.
보아스

이 경우 내 친구는 간단히 "npm uninstall package_name"또는 --save를 접미사로 사용하여 package.json 파일에서 해당 항목을 삭제할 수도 있습니다. npm uninstall package_name (패키지 삭제) npm uninstall package_name --save (패키지 삭제 및 패키지 json의 종속성에서 항목 제거) npm uninstall package_name --save-dev (패키지 삭제 및 패키지 json의 devdependencies에서 항목 제거)
Ajay Kotnala

22

세계 최초 rimraf 설치

npm install rimraf -g

node_modules 폴더에서 cmd를 사용하여 경로로 이동하여 아래 명령을 적용하십시오.

rimraf node_modules

좋은 대답이지만 다른 패키지를 제거하기 위해 패키지를 설치하는 것은 좋지 않습니다. npm prune이상적인 솔루션입니다.
Binayak Gouri Shankar

예, 그러나 프로젝트에서 node_module 폴더를 제거하려면 이것이 가장 쉽고 쉬운 방법입니다.
Ankit Parmar


9

버전 6.5.0부터 npm은 clean-install모든 패키지를 강제로 새로 고치는 명령 을 지원 합니다.


1
이것이 바로 내가 필요한 것입니다. 노드를 업데이트 할 때 가장 먼저 발생하는 것은 " 'npm install'을 실행 한 이후 환경을 변경 한 것 같습니다." 내가 이미 콘솔에 있기 때문에 폴더 삭제 등을 엉망으로 만드는 것보다 새로 설치하는 것이 가장 쉬운 방법입니다.
Jarrod McGuire

3

package.json 안에 몇 줄을 추가했습니다.

"scripts": {
  ...
  "clean": "rmdir /s /q node_modules",
  "reinstall": "npm run clean && npm install",
  "rebuild": "npm run clean && npm install && rmdir /s /q dist && npm run build --prod",
  ...
}

원하는 clean경우이 rimraf node_modules또는을 사용할 수 있습니다 rm -rf node_modules.

잘 작동합니다



1

내가 찾은 가장 좋은 기사는 이것입니다 : https://trilon.io/blog/how-to-delete-all-nodemodules-recursively

콘솔에서 모든 폴더 지점에서 쉽게 실행할 수 있습니다.

그러나 기사의 요약 으로이 명령 node_module은 다른 프로젝트에서 발견 된 각 폴더 의 크기를 찾습니다 .

find . -name "node_modules" -type d -prune -print | xargs du -chs

그리고 실제로 그것들을 제거하려면 :

find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;

이 기사에는 Windows 셸에 대한 지침도 포함되어 있습니다.


0

package-lock.json에 필요하지 않은 패키지를 제거 / 편집 (패키지 이름은 dependencies & devDependencies로 작성 됨)

npm install


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.