2012-05-20 5 views
1

npm-shrinkwrap.jsonpackage.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

이를 반환했습니다. 나는 이것이 문제라고 생각한다. 이제 문제는 그것이 왜 포함되어 있지 않은가입니다.

답변

5

귀하의 npm-shrinkwrap.json에는 연결 버전의 q가 포함되지 않습니다. 수축 포장을 생성하기 전에 npm install을 사용해야합니다.

관련 문제