npmでバージョンを固定するにはnpm shrinkwrapする
npmで各パッケージのバージョン番号を固定してインストールする仕組みがあるのだろうかと調べてみたら、shrinkwrapという機能があった。
説明書
- https://docs.npmjs.com/cli/shrinkwrap
npm install
するにはpackage.jsonも必要npm shrinkwrap
するとnpm-shrinkwrap.jsonが生成され、各パッケージのバージョン番号が記録されるnpm-shrinkwrap.json
をgitに追加しておくと、別の環境でnpm install
した時にも同じバージョンのパッケージをインストールできるnpm install foo --save
するとnpm-shrinkwrap.jsonにもfooが追加されるnpm uninstall foo --save
するとnpm-shrinkwrap.jsonからfooが削除されるnpm shrinkwrap --dev
するとdevDependenciesも記録対象になる
使ってみた
npmのバージョン。
試しに使ってみた例がこちら。
shrinkwrapを有効にしている場合、npm install
時に、次のメッセージが出てくるようだ。
バージョンの固定
別ディレクトリにpackage.jsonとnpm-shrinkwrap.jsonをコピーしてnpm install
してみる。
最新版のjquery@3.1.1、jquery-ui@1.12.1ではなく、それぞれ3.0.0、1.12.0がインストールされた。