我有一个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。