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.1npm updateするとバージョンを上げていないjqueryの最新版3.1.1がインストールされてしまった。元に戻す場合には、もう一度npm installする。
$ npm install
shrinkwrap-test@1.0.0 /home/vagrant/work/shrinkwrap-test2
└── jquery@3.0.0