🙀
久しぶりに使うレポジトリの脆弱性報告が有りまくったので npm package をアップデートをしてスッキリする
久しぶりに npm を用いたプロジェクトを開き、npm i
すると、警告を受けることがあります。
% npm i
audited 1292 packages in 5.692s
113 packages are looking for funding
run `npm fund` for details
found 2 high severity vulnerabilities
run `npm audit fix` to fix them, or `npm audit` for details
vulnerabilities
を訳すと「脆弱性」です。やばいですね。
npm audit
コマンドを使うと、脆弱性に問題のあるパッケージを一覧できます。
% npm audit
=== npm audit security report ===
... (中略)
found 25 vulnerabilities (2 low, 23 high) in 1293 scanned packages
run `npm audit fix` to fix 23 of them.
2 vulnerabilities require manual review. See the full report for details.
すごい見つかって草
GitHub でも怒られまくってますね(ごめんなさい)
アップデートしましょう
npm-check-updates というツールが便利なのでこれを使います。
% npm i -g npm-check-updates
ncu
コマンドが使えるようになるので、打ちます。
% ncu
Checking /Users/feb19/git/web/nuxt-content-web/package.json
[====================] 2/2 100%
@nuxt/content ^1.0.0 → ^1.11.1
nuxt ^2.12.2 → ^2.14.12
Run ncu -u to upgrade package.json
ncu -u
したらいいんじゃね?って言われるのでします。
% ncu -u
Upgrading /Users/takahashi.nobuhiro/git/web/nuxt-content-web/package.json
[====================] 2/2 100%
@nuxt/content ^1.0.0 → ^1.11.1
nuxt ^2.12.2 → ^2.14.12
Run npm install to install new versions.
こいつとこいつが悪いことが分かりました。
このタイミングで package.json
が書き換えられます。
"dependencies": {
- "@nuxt/content": "^1.0.0",
- "nuxt": "^2.12.2"
+ "@nuxt/content": "^1.11.1",
+ "nuxt": "^2.14.12"
}
}
npm install
したらいいんじゃね?って言われるのでします。
% npm i
...(中略
added 245 packages from 316 contributors, removed 129 packages, updated 304 packages, moved 14 packages and audited 1408 packages in 34.762s
100 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
このタイミングでパッケージのアップデートが走って、 package-lock.json
も書き換えられます。
再度 npm audit
してみました。
% npm audit
=== npm audit security report ===
found 0 vulnerabilities
in 1408 scanned packages
よかったね。
というわけで commit
https://github.com/feb19/nuxt-content-web/commit/771b7b59da41149ea229f0d1b36f8e3489cbe2cc
GitHub さんも安心してくれました。
注意点
メジャーバージョンまであげてしまうので、breaking changing があって、更新してしまったが故のバグを発生する可能性があります。
Unit テストや E2E テスト、チームでのレビュー、CI などを行って、安定的にシステムが更新できるよう、対策をしておくとよいです。(やりすぎも注意)
自動で常に ncu -u
するような CI を組んでいる場合は要注意です。
その他
- npm-check というツールもあるのでこちらが好きな人はこちらを。
- npm i した時に怒られる前に
npm outdated
コマンドで古いぞーってのを一覧することもできます
% npm outdated
Package Current Wanted Latest Location
@nuxt/content 1.2.0 1.11.1 1.11.1 nuxt-content-web
nuxt 2.12.2 2.14.12 2.14.12 nuxt-content-web
-
npm audit fix
コマンドで直せるものもありますが、パッチが取得できず自動で修正できないものもあるので、直せないことがあります。
% npm audit fix
removed 1 package and updated 4 packages in 4.848s
113 packages are looking for funding
run `npm fund` for details
fixed 23 of 25 vulnerabilities in 1293 scanned packages
2 vulnerabilities required manual review and could not be updated
% npm audit
=== npm audit security report ===
... (中略)
found 2 high severity vulnerabilities in 1292 scanned packages
run `npm audit fix` to fix 2 of them.
そして無限へ...
かんそう
- 参考になればと思いますが、この記事を鵜呑みにしないでほしい気持ちがあります
- ncu って 3 文字どっかのコマンドと被りそう
- なぜか私の頭の中の m.c.A・T がちらつく
Discussion