依存関係をロックする
一段落説明
あなたのコードは多くの外部パッケージに依存しています。例えば、'require' して momentjs-2.1.4 を使用しているとします。デフォルトでは、本番環境にデプロイするときに npm が momentjs 2.1.5 をフェッチすることがありますが、これは残念ながらテーブルにいくつかの新しいバグをもたらすことになります。npm の設定ファイルと引数 -save-exact=true
を使うことで、インストールされた正確な同じバージョンを参照するように npm に指示します。そのため、次に npm install
を実行したとき(本番環境やテスト用に出荷する予定の Docker コンテナ内で)、同じ依存バージョンが取得されます。別のポピュラーな方法としては、.shrinkwrap
ファイル ( npm を使って簡単に生成されます) を使って、どのパッケージとバージョンをインストールすべきかを正確に記述することで、環境が期待以上に新しいバージョンを取得したくなることがないようにする方法があります。
- 更新: npm 5 の時点で、依存関係は .shrinkwrap を使って自動的にロックされます。新興のパッケージマネージャである Yarn も、デフォルトで依存関係をロックしています。
コード例: 正確なバージョンを使用するように npm に指示する .npmrc ファイル
// これをプロジェクトディレクトリに .npmrc ファイルとして保存します
save-exact:true