【Nuxt.js】GitHubからセキュリティアラートが届いたときの対応【package.json】

はじめに

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のバージョン指定を最新に変更し、アップデートも行います。

無条件にすべてのパッケージを最新バージョンに変更します。その結果メジャーバージョンにアップデートされ、思わぬ挙動が起こる可能性もあるので注意してください。