npm便利ですよね。
昨今フロントweb開発でNode.jsが登場しないことはないので、みなさんお使いかと思いますが、ちゃんとバージョン管理していますか?
私はしがないweb制作者ですが、npmパッケージなしでの開発はありえないです。
ただそういえばバージョン管理をしていないなと思い、現在バージョンと最新バージョンを比べてみることに。そしたら...
$ npm outdated
Image may be NSFW.
Clik here to view.
微妙にパッケージが古くなってた...
npm-check-updatesをインストール
まずはpackage.jsonを最新バージョンにアップグレードしてくれるnpm-check-updatesをインストールします。
npm i npm-check-updates
そしたら、
ncu -u
すると、
Image may be NSFW.
Clik here to view.
Run npm install to install new versions.
というメッセージが出たらOK、最後にパッケージをインストールします。
npm i
すると...
Image may be NSFW.
Clik here to view.
何やら不穏なメッセージ。
660の脆弱性があるから直すためにnpm audit fixしろよな!
ということらしいです👀
ヒェ...
(npmの更新サボってた人はみんな数百レベルであると思われます)
とりあえずコマンドを実行します。脆弱性のある箇所を自動修正してくれるコマンドです。
npm audit fix
すると
Image may be NSFW.
Clik here to view.
残り12個の脆弱性は手作業でオナシャス!!
ということらしい。
マジかい。
npm audit
で脆弱性一覧を出してみる。
Image may be NSFW.
Clik here to view.
15個の脆弱性のうち、一個の危険性がhigh
になっていました(脆弱性から正規表現を使ったDoS攻撃を受ける可能性があるそうです)
highのものを詳しくみてみます。
───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Denial of Service │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ http-proxy │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=1.18.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ browser-sync [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ browser-sync > http-proxy │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://npmjs.com/advisories/1486 │
└───────────────┴──────────────────────────────────────────────────────────────┘
browser-syncが依存している、http-proxyに問題があるそう。なんぞこれ...?
調べてみると、執筆時点5日前にアップデートが出ており、最新版にする必要がありそうです。
https://www.npmjs.com/advisories/1486
とりあえず
$ npm install http-proxy
で最新版をダウンロードし、再度脆弱性のある箇所を自動修正してくれるコマンド↓
npm audit fix
すると...
Image may be NSFW.
Clik here to view.
fixed 9 of 13 vulnerabilities in 1275 scanned packages
4 vulnerabilities required manual review and could not be updated
high消えたし、4つまで減らせたよかった!!
ぬわ〜ん疲れたも〜ん!!
結論 npmは定期的にお手入れせよ
バージョンは古くなってるし、脆弱性はあるし、多分自動化できるんだろうけど弱弱エンジニアなので、これから調べてみます。
みんなもnpmパッケージのバージョン管理、やろう!!