Node.jsでパッケージのバージョンを固定する方法

package.jsonのdependencies、devDependenciesに記述されるバージョンは

semver 日本語版

上記の仕様で記述されます

なので、環境(インストールするタイミング等)によってバージョンが異なってしまうことがよくあります

バージョンを固定する方法

shrinkwrap

npm shrinkwrap

パッケージを install した後に上記コマンドを叩く
そうするとnpm-shrinkwrap.jsonというファイルが作成され、npm installした時に
ここに記述されているバージョンでインストールされる

exact

npm install パッケージ名 [--save|--save-dev] [--exact|-E]

インストール時に「--exact|-E」を指定する
そうすると、package.jsonに下記のように記述されるのでバージョンが固定されます
(チルダやキャレットが付かないので)

"パッケージ名": "0.1.6"

まとめ

どちらの方法でバージョン固定できますが、「exact」の方が別ファイルが作られないのでいいかも