npm-shrinkwrap.json
및 package.json
을 "deployment"라고 부릅니다.Node.js shrinkwrapped package.json을 사용하면 npm install에서 새 버전을 업데이트하지 않고도
내 서버에서 github에서이 배포 분기를 가져 와서 병합합니다. 그러면 내 서버에 최신 배포 버전이 적용됩니다.
node_modules 바이너리 등은 출하되지 않으므로 서버 저장소에서 프로젝트 저장소를 가져온 후에도 서버 측에서 npm install
또는 npm update
을 실행해야합니다.
이것이 내가 npm shrinkwrap
을 사용하기로 결정한 이유입니다. 그러나이 npm-shrinkwrap.json
을 기본 폴더에두고 npm install
을 실행하더라도 shrinkwrapped json 파일이이 하위 폴더를 잠근 경우에도 여전히 최신 버전의 하위 모듈을 설치합니다. npm처럼 shrinkwrap 파일도 보이지 않는 것 같습니다.
왜 이런 일이 발생하는지 설명하고이 상황을 해결할 수 있습니까? 내가 npm install
를 실행할 때이 버전 0.5.0로 버전 0.4.2에서 qs
업데이트, 그러나
{
"name": "appname",
"version": "0.0.1",
"dependencies": {
"eventemitter2": {
"version": "0.4.9"
},
"after": {
"version": "0.4.1"
},
"express": {
"version": "2.5.9",
"dependencies": {
"connect": {
"version": "1.8.7",
"dependencies": {
"formidable": {
"version": "1.0.9"
}
}
},
"mime": {
"version": "1.2.4"
},
"qs": {
"version": "0.4.2"
},
"mkdirp": {
"version": "0.3.0"
}
}
},
"commander": {
"version": "0.6.0"
},
"should": {
"version": "0.6.3"
},
"request": {
"version": "2.9.202"
}
}
}
: npm-shrinkwrap.json
반면
"dependencies" : {
"eventemitter2" : "0.4.9",
"after" : "0.4.1",
"express" : "2.5.9"
},
"devDependencies" : {
"mocha" : ">= 1.0.3 < 2",
"should" : ">= 0.6.3 < 1",
"request" : ">= 2.9.202 < 3",
"commander" : ">= 0.6.0 < 1"
},
은 다음과 같습니다
이 package.json
의 일부입니다. 또한 mime
을 1.2.5로 업데이트했습니다. 왜 그렇게 했습니까?
[email protected] ./node_modules/express/node_modules/connect/node_modules/qs
[email protected] ./node_modules/express/node_modules/connect/node_modules/mime
흥미롭게도 충분히 수축 포장이 중 어느 것도 포함되어 다음 npm install
이를 반환했습니다. 나는 이것이 문제라고 생각한다. 이제 문제는 그것이 왜 포함되어 있지 않은가입니다.