npm-shrinkwrap.json
チェックインした Node.js アプリがあります。npm install
ローカルで実行すると、で指定されたバージョンがインストールされますがnpm-shrinkwrap.json
、Heroku (Cedar スタック上) にプッシュすると、シュリンクラップが無視され、単に最新バージョンがインストールされるようです。
私は何か間違ったことをしていますか?チェックインする必要はありませnode_modules
んよね?
あなたの答えで言うように、Heroku が Nodejs ビルドパックを作成したとき、この機能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 を使用していますが、 changelogshrinkwrap
によると、npm 1.1.2 でのみ追加されました。
Herokuがnpmをアップグレードするまで、追加するnode_modules
と問題が解決しました。