我有一个npm-shrinkwrap.json
签入的 Node.js 应用程序。当我在npm install
本地运行时,它会安装 中指定的版本npm-shrinkwrap.json
,但是当我将它推送到 Heroku(在 Cedar 堆栈上)时,它似乎忽略了收缩包装,只是安装了最新版本。
难道我做错了什么?我不需要办理登机手续node_modules
,是吗?
正如您在回答中所说,当 Heroku 编写 Nodejs buildpack 时,该功能npm shrinkwrap
不存在。
但是,从 1.1.2 版本开始,首先npm install
尝试npm-shrinkwrap.json
,然后回退到package.json
. 这意味着 Heroku 尊重它(即使 Heroku 编写代码时还没有构思该功能)。艾萨克真棒。
所以只需添加到您的package.json
:
"engines": {
"node": "0.8.x",
"npm": ">=1.1.2"
}
然后运行npm shrinkwrap
, 和git add npm-shrinkwrap.json
. 然后正常提交。
事实证明,Heroku 目前使用 npm 1.0.106,但shrinkwrap
根据changelog仅在 npm 1.1.2 中添加。
添加node_modules
解决了我的问题,直到 Heroku 升级他们的 npm。