依存関係に潜在的なセキュリティ脆弱性が見つかりました
【NCUを使って解決する】
NCU (npm-check-updates) を使ってパッケージのバージョンを
上げることで簡単に解決できるらしい。
早速インストールして、
$ yarn global add npm-check-updates
バージョンが上がるパッケージを確認して、
$ ncu core-js ^3.3.2 → ^3.6.4 vue ^2.6.10 → ^2.6.11 @vue/cli-plugin-babel ^4.0.0 → ^4.2.3 @vue/cli-plugin-eslint ^4.0.0 → ^4.2.3 @vue/cli-service ^4.0.0 → ^4.2.3 babel-eslint ^10.0.3 → ^10.1.0 eslint ^5.16.0 → ^6.8.0 eslint-plugin-vue ^5.0.0 → ^6.2.2 vue-template-compiler ^2.6.10 → ^2.6.11 Run ncu -u to upgrade package.json
OKであれば package.json を更新します。
$ ncu -u core-js ^3.3.2 → ^3.6.4 vue ^2.6.10 → ^2.6.11 @vue/cli-plugin-babel ^4.0.0 → ^4.2.3 @vue/cli-plugin-eslint ^4.0.0 → ^4.2.3 @vue/cli-service ^4.0.0 → ^4.2.3 babel-eslint ^10.0.3 → ^10.1.0 eslint ^5.16.0 → ^6.8.0 eslint-plugin-vue ^5.0.0 → ^6.2.2 vue-template-compiler ^2.6.10 → ^2.6.11 Run npm install to install new versions.
最後にパッケージを再インストールします。
$ yarn install
これでほとんどのリポジトリは解決してくれました!
【yarn の resolutions を使って解決する】
パッケージがメンテされていなくて、問題のあるパッケージに依存し続けてしまう場合の解決方法。
僕の場合は、去年の7月頃から全く更新されていない OnsenUI がこれにあたり、
NCU じゃ解決することができなくて色々調べたら出てきました。
公式の「なぜこれがしたいのか?」にも以下のことが書いてあります。
プロジェクトでサブ依存関係にあるパッケージが重要なセキュリティ上の更新があり、依存関係にあるパッケージが最小のバージョン更新を行うまで待てないことがあります。
「選択的な依存関係の解決」という名の通り、
バージョンを指定して無理やり更新するといった感じで少し荒療治です。
package.json に更新したいパッケージ名とバージョンを追記します。
... "resolutions": { "minimist": "^1.2.2" } ...
そしてパッケージを再インストールします。
$ yarn install
ちょっと無理やり感があり、デグレ起こしていないかなどは確認する必要がありそうですが、ひとまず脆弱性に関する問題は解決できました!