Node.js에서 사용하지 않는 패키지를 제거하거나 제거하는 npm 명령


414

Node.js 프로젝트 (더 이상 정의되지 않은)에서 사용되지 않는 (선언되지 않은) 모든 종속성을 단순히 제거하는 방법이 있습니까? package.json응용 프로그램을 업데이트 할 때 참조되지 않은 패키지를 자동으로 제거하고 싶습니다.


1
무엇에 의해 사용되지 않습니까? node_modules각 폴더에서 폴더를 제거 할 때 폴더를 제거 package.json하시겠습니까?
SLaks

1
정확히, mhm npm ll은 이미 후보 인 좋은 힌트를 제공합니다.
타 리온

답변:


670

참고 : npm패키지 잠금이 활성화 된 경우 최신 버전이 자동으로 수행되므로 --production플래그 를 사용하여 개발 패키지를 제거하는 것 외에는 필요하지 않습니다 .


npm prune나열되지 않은 모듈을 제거하려면 실행하십시오 package.json.

보낸 사람 npm help prune:

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

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

는 IF --production플래그가 지정되면,이 명령은 devDependencies에 지정된 패키지를 제거합니다.


3
올바르게 읽으면 하위 하위 항목이에 나열되어 있지 않으므로 모든 하위 종속성이 제거됩니다 package.json. 맞습니까? 따라서 다음 업데이트 또는 설치시 다시 설치해야합니다.
nshew

1
예, 하위 종속성을 제거합니다. 하위 종속성은 실제로 모듈의 자체 node_modules디렉토리에 저장 되므로 모듈과 함께 제거됩니다.
Darkhogg

2
예를 들어 보겠습니다. 나는에서 업장을 제거 package.json하지만 바우어를 떠납니다. 을 실행하면 종속성이 포함 된 npm prune자체 node_modules폴더를 포함한 모든 업장 이 제거 될 것으로 기대합니다 . bower의 의존성 (bower-json, bower-logger, chmodr, fstream, glob 등)은 어떻습니까? 기술적으로, 그것들은 내 프로젝트에 나열되지 않습니다 package.json. 그것들이 제거 되었습니까?
nshew

3
아닙니다. 그들이있어주의 하지 자신에 node_modules있지만, 내부 node_modules/bower/node_modules 에 의해 "보호" node_modules/bower/package.json. 패키지의 종속성 패키지의 종속성 이 혼합되어 있지 않습니다 .
Darkhogg

2
설치 NPM, 위의 지침에 있었어야 전에 수축 포장을 삭제합니다.
Andy Ray
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.