はじめに
GitHubでソース管理を行っているプロジェクトにpackage.json
のセキュリティアラートが届いたときの対応を記載します。
今回はNuxt.jsで作成したプロジェクトでの対応記録のため、タイトルなどに「Nuxt.js」と記載していますが、npm/yarnでパッケージ管理を行っているプロジェクトであれば適用可能です。
また、Nuxt.jsではnpm/yarnのどちらでもパッケージ管理が行えるため、両方の手順を記載します。
package.json
のバージョン指定方法
まず前提知識として、package.json
のバージョン指定方法を理解しておく必要があります。
以下の記事が大変よくまとまっているため参照してください。
npm
npm update
以下のコマンドでパッケージのアップデートが行えます。
$ npm update
このコマンドは、package.json
で指定した範囲のバージョンで更新があればアップデートを行います。
つまり、package.json
で指定しているバージョンが最新バージョンの範囲外であれば、このコマンドを実行しても最新バージョンにはアップデートされないことになります。
例えば、以下のようがpackage.json
があるとします。
{
"dependencies": {
"foo": "^1.0.0"
}
}
このバージョン指定方法は、「1.0.0以上2.0.0未満のバージョン」という意味になります。
foo
パッケージの最新バージョンが2.0.0以上の場合、npm update
を行っても最新バージョンにはアップデートされません。
このような場合、package.json
のバージョン指定方法を変更してからnpm update
を行えば最新バージョンにアップデートできますが、多くのパッケージに対してバージョン指定のメンテナンスを行っていくのは大変な作業です。
npm-check-updates
npm-check-updates
を使用すれば、packge.json
のバージョン指定を最新バージョンにしてくれます。
npm-check-updates
をインストールするには以下のコマンドを実行します。
$ npm install -g npm-check-updates
インストールできたら、package.json
のあるディレクトリで以下のコマンドを実行します。
$ npm-check-updates -u
# or
$ ncu -u
あとは以下のコマンドでパッケージのアップデートを行うだけです。
$ npm update
npm-check-updates
は無条件にすべてのパッケージを最新バージョンに変更します。その結果メジャーバージョンにアップデートされ、思わぬ挙動が起こる可能性もあるので注意してください。
yarn
yarn upgrade
以下のコマンドでパッケージのアップデートが行えます。
$ yarn upgrade
このコマンドは、package.json
で指定した範囲のバージョンで更新があればアップデートを行います。
npm update
同様、最新バージョンが指定の範囲外の場合、最新バージョンにはアップデートされません。
yarn upgrade --latest
package.json
で指定した範囲外のバージョンまでアップデートしたい場合、以下のコマンドを実行します。
$ yarn upgrade --latest
package.json
のバージョン指定を最新に変更し、アップデートも行います。
無条件にすべてのパッケージを最新バージョンに変更します。その結果メジャーバージョンにアップデートされ、思わぬ挙動が起こる可能性もあるので注意してください。