2017-05-09 7 views
3

ngrok의 도움으로 localhost에서 온라인 사이트로 addon을 업로드하고 npm을 사용하여 CommandPrompt에을 설치하기 위해 node_modules를 만들었습니다. 그러나 생성 된 node_modules 폴더 크기는 78MB였습니다. 이 경우 크기를 줄이기 위해 효율적 일 수 있으므로 원치 않는 폴더를 제거하여 크기를 줄여야하므로 인터넷을 검색하고 두 가지 제안을 받았습니다. - 생산 모드을 사용하고 다른 하나는 을 사용하고 있습니다. 수축 포장.생산을위한 node_modules의 크기 축소

는 첫 번째 단계로 나는 NPM 여기에 지정된으로 --only = 생산 NPM --production 및 를 설치 설치 명령 을 사용 : How do you prevent install of "devDependencies" NPM modules for Node.js (package.json)?을,하지만 난 폴더 크기의 변화를 볼 din't.

다음은이 사이트에서 주어진 크기 축소를 위해 shrinkwrap을 사용하는 방법에 대해 설명하고 시도해 보았습니다 : https://docs.npmjs.com/cli/shrinkwrap,하지만 성공하지 못했습니다.

덧붙여 여기에 나는 https://www.npmjs.com/package/modclean 명령을 사용합니다. modclean -n default : safe 나는 10-11mb를 줄였습니다.

하지만 여전히 많은 수의 원치 않는 폴더가 node_modules에 있습니다. 다음과 같이 나는

"dependencies": { 
    "atlassian-connect-express": "2.0.0", 
    "body-parser": "^1.14.2", 
    "compression": "^1.6.0", 
    "cookie-parser": "^1.4.0", 
    "errorhandler": "^1.4.2", 
    "express": "^4.13.3", 
    "express-hbs": "*", 
    "jugglingdb-sqlite3": "0.0.5", 
    "morgan": "^1.6.1", 
    "static-expiry": ">=0.0.5" 
} 

내가 package.json에 준 종속성이 적고, package.json에서 몇 가지 필요한 종속성을 지정했습니다,하지만 난 node_modules에서 만든 폴더의 큰 세트를 참조하십시오. node_modules의 크기를 줄이려면 다른 프로세스가 있습니까?

+0

'npm install --production'을 실행해도 devDependancies가 node_modules에서 제거되지 않습니다. 크기 축소를보기 위해'node_modules'를 먼저 삭제해야합니다. – RyanZim

답변

1

NPM v3부터 가능하면 앱의 모든 종속성이 node_modules의 최상위 레벨에 보관되어 NPM에서 중복을 쉽게 제거하고 '경로가 너무 길어 짐'오류를 방지합니다. Windows에서. 너무 자신의 의존성을해야합니다 의 모든 패키지 (와 -

실현하기 위해 중요한 것은 내가 말할 때 '앱에서 모든 종속성이'나는 당신의 package.json에있는 사람을 의미하지 않는다는 것입니다 그들의 의존성은 그들 자신의 의존성을 가질 수있다). 이것이 node_modules 안에 항상 많은 폴더가있는 이유입니다.

예를 들어 express에는 28 개의 종속성이 있으므로 설치 한 유일한 것이라면 node_modules에 최소 29 개의 폴더가 있어야합니다. 이는 하위 종속성을 고려하지 않고 적용됩니다.

따라서, 귀하의 질문에 대답하는 -을 제외하고 일에서 지정한, 당신이 그 폴더를 모두 사용하고 있기 때문에 , 당신의 node_modules 어떤 작은하지 수 있습니다! 가장 직접적인 방법으로 만 항상 그렇지는 않습니다.

+0

내가 이해하지 못하는 이유는 NPM이 --production 플래그를 사용하는 경우에도 node_modules에 축소되지 않은 javascript 파일을 포함시키는 이유가 무엇입니까? 축소 된 패키지 만 제공 할 수있는 방법이 없어야합니까? – nocarrier

+0

@nocarrier : 모든'--production'은 개발 의존성을 배제합니다. NPM은 축소에 관해 어떤 결정도 내리지 않습니다. 패키지 작성자가 그런 방식으로 출판하면 NPM에서 축소 된 코드 만 얻을 수 있습니다. 왜 그런지 알기를 원한다면 NPM 개발자에게 물어보아야 할 것입니다. 저는 심령이 아닙니다. p –