2016-09-03 8 views

답변

2

는 간단한 옵션은 테이블 플립입니다 : 완전히 node_modules 디렉토리를 제거하고 다시 만드는 것이에 npm install를 실행합니다.

원하지 않는다면 depcheck과 같이 @ sagar-gopale과 같이 의존성을 검사하는 도구를 사용해 볼 수 있습니다.

관련 항목 : npm -v을 실행하여 npm v2 또는 v3을 실행 중인지 확인하십시오. @cartant가 대답하는 것처럼 v3을 사용하면 node_modules 디렉토리가 최대한 평평 해 지므로 다른 모듈 (npm v2와 함께 설치 될 때)의 하위 디렉토리로 표시되는 항목이 node_modules 최상위 레벨에 나타납니다. 이것이 예상보다 많은 모듈을 보는 이유 일 수 있습니다.

+0

나는 table-flipping의 첫 번째 옵션을 수행했다. 그러나 dep 체크를 실행했을 때 여전히 사용하고있는 "사용되지 않는 의존성"을 많이 보여준다. 이것의 기초가되는 depcheck은 무엇입니까? 나는'npm install -g depcheck react jsx'도 만들었지 만, 그런 종류의 앱을 만들고 있기 때문에,하지만 es6을 사용한다면, 내가 포함 시켰습니까? 무엇을 의미하는 구문 지원을 의미합니까? – stackjlei

1

NPM 3을 사용하는 경우 NPM 3이 종속성 계층을 평탄하게 만들기 때문에 node_modules 디렉토리에 예상하지 못한 많은 수의 모듈이 표시 될 수 있습니다.

사용중인 버전에 따라 npm list 명령을 실행하면 NPM은 불필요한 불필요한 모듈을 강조 표시해야합니다.

+0

어쨌든 내가 필요로하는 것을 보여주기 위해 의존성 계층을 unflatten 할 수 있습니까? – stackjlei

+1

'npm list --depth = 0' 명령을 실행하면 루트 레벨 모듈 만 나열됩니다. 일반적으로 모듈을'package.json'에 종속물로 추가하고'npm install'을 실행하여 추가 한 내용을 설치합니다. 의존성을 실제로 사용했는지 여부를 알아야 할 경우'depcheck '과 같은 도구가 필요합니다. – cartant

0

패키지는 다른 패키지를 요구할 수 있기 때문에 node_modules 폴더에 packages.json 파일에 존재하지 않는 패키지가 있다고해서 그것이 지정된 패키지 중 하나에 필요하지 않다는 것을 의미하지는 않습니다.

솔루션의 루트 디렉토리에서 npm prune 명령을 실행하면 종속성 트리를 읽고 더 이상 필요하지 않은 패키지를 제거합니다.