npmパッケージのバージョンを固定して、動作に変化がないようにしたい。
バージョン情報
Node: 8.1.4
npm: 5.6.0
macOS High Sierra: 10.13.4
バージョン固定の手順
npmのver5以降からpackage-lock.jsonが導入されたため、下記の手順でバージョンのロックができる
package.jsonのバージョン指定をパッチバージョンまで記述(5.0.x)。互換記号(~,^など)は消す
package-lock.jsonを一度削除し、
$ npm install
package.jsonから呼び出している子のpackageはlock.json側で管理される
初めからキャレット^
記号がつかないようにしたい
package.jsonのバージョン指定にキャレット^
記号がつくと、範囲指定になるためバージョンが固定されない。そもそも初めからキャレットがつかないようにしたい。
$ npm config set save-exact true
👆のコマンドを実行することにより、npmの設定を変更して、npm install
時にキャレット^
が付かないようにすることができる。
また、npmの設定は~/.npmrc
に保存されているので、.npmrc
ファイルをプロジェクト直下に配置することによって、プロジェクト単位でnpm install
時のキャレットを無効にすることができる
.npmrc
:
save-exact=true
参考サイト
package.jsonのパッケージバージョンに記載される ^ (キャレット) とは?どうしてつくのか? - dackdive's blog