npm shrinkwrapしたパッケージのバージョンを上げる
前回の記事でnpmパッケージのバージョンを固定する方法を書いた。固定したバージョンをアップデートする場合、更新されたnpm-shrinkwrap.jsonを配布した後に実施するのはnpm install
だった。
説明書
- npm update
npm update
すると、全パッケージが最新版に更新される(package.jsonで指定されているsemverでの最新版の事)npm update pkg
すると、指定したパッケージが最新版に更新される
固定したバージョンをアップデートする
npm update
、npm update pkg
で更新するか、npm install pkg@version
で更新する。特殊な事情でsemverを変えたくない場合にnpm install
することになるんだと思う。
npmのバージョン。
$ node -v
v6.9.1
$ npm -v
3.10.8
$ cat npm-shrinkwrap.json
{
"name": "shrinkwrap-test",
"version": "1.0.0",
"dependencies": {
"jquery": {
"version": "3.0.0",
"from": "jquery@3.0.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.0.0.tgz"
},
"jquery-ui": {
"version": "1.12.0",
"from": "jquery-ui@1.12.0",
"resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.12.0.tgz"
}
}
}
$ npm update jquery-ui
shrinkwrap-test@1.0.0 /home/vagrant/work/shrinkwrap-test
└── jquery-ui@1.12.1
$ npm ls --depth 0
shrinkwrap-test@1.0.0 /home/vagrant/work/shrinkwrap-test
├── jquery@3.0.0
└── jquery-ui@1.12.1
配付後に更新する場合はnpm install
サーバーにnpm-shrinkwrap.jsonを配付した後に実行するのは、npm install
である。npm update
すると、npm-shrinkwrap.jsonを無視して全パッケージを更新することになる。ここでは、別ディレクトリにnpm-shrinkwrap.jsonをコピーして試してみる。
$ npm install
shrinkwrap-test@1.0.0 /home/vagrant/work/shrinkwrap-test2
└── jquery-ui@1.12.1
$ npm ls --depth 0
shrinkwrap-test@1.0.0 /home/vagrant/work/shrinkwrap-test2
├── jquery@3.0.0
└── jquery-ui@1.12.1
$ npm update
shrinkwrap-test@1.0.0 /home/vagrant/work/shrinkwrap-test2
└── jquery@3.1.1
npm update
するとバージョンを上げていないjqueryの最新版3.1.1がインストールされてしまった。元に戻す場合には、もう一度npm install
する。
$ npm install
shrinkwrap-test@1.0.0 /home/vagrant/work/shrinkwrap-test2
└── jquery@3.0.0