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と問題が解決しました。