最近のGitHubでは、リポジトリ上で依存している外部のライブラリやモジュールが古いままだと警告を出してくれる機能が追加されました。Webページ上でも表示されますし、git push
などremoteと通信した際などにも確認できます。
$ git push
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: GitHub found 6 vulnerabilities on katsube/gpwd's default branch (2 high, 4 moderate). To find out more, visit:
remote: https://github.com/katsube/gpwd/network/alerts
remote:
To github.com:katsube/gpwd.git
35f20ab..5b85229 master -> master
これらを放置しておくとセキュリティホールの原因にもなりかねないので、定期的にpackage.jsonで指定しているバージョンを更新し、動作確認をする必要が出てきます。しかし1つつずつ最新のバージョンを手作業で確認するのは地獄ですよね。
そんなわけで今回はNode.jsで動作するプロジェクトで利用しているライブラリを簡単にアップデートする方法についてまとめたいと思います。
目次
ncuでかんたんアップデート
インストール
このあたりの更新が簡単にできるncu
コマンドをインストールします。npmで一発です。
$ npm install -g npm-check-updates
今回は3.1.18が入りました。
$ ncu --version
3.1.18
アップデートの確認
プロジェクトのあるディレクトリでncu
とだけ打つと、packege.json
の内容とネットワーク経由でパッケージの最新のバージョンを比較して表示してくれます。
$ ncu
Checking (略)/gpwd/package.json
[====================] 2/2 100%
commander ^2.19.0 → ^2.20.0
jest ^23.6.0 → ^24.8.0
Run ncu -u to upgrade package.json
今回は「commander」「jest」が古くなってしまっていることがわかりました。
package.jsonを更新
ncu -u
を実行すると、package.json
を最新の状態に自動的に書き換えてくれます。
$ ncu -u
Upgrading (略)/gpwd/package.json
[====================] 2/2 100%
commander ^2.19.0 → ^2.20.0
jest ^23.6.0 → ^24.8.0
実際にgit diff
で以前にcommitした内容と比較すると書き換わっているのが確認できました。
$ git diff 5b8522 package.json
diff --git a/package.json b/package.json
index b043ea5..aa10c7f 100644
--- a/package.json
+++ b/package.json
@@ -27,9 +27,9 @@
},
"homepage": "https://github.com/katsube/gpw#readme",
"dependencies": {
- "commander": "^2.19.0"
+ "commander": "^2.20.0"
},
"devDependencies": {
- "jest": "^23.6.0"
+ "jest": "^24.8.0"
}
}
モジュールを更新
あとはnpm install
すればpackage.jsonと現在のモジュールの差分を自動的にアップデートしてくれます。
$ npm install
> fsevents@1.2.9 install (略)/gpwd/node_modules/fsevents
> node install
node-pre-gyp WARN Using request for node-pre-gyp https download
[fsevents] Success: "(略)/gpwd/node_modules/fsevents/lib/binding/Release/node-v67-darwin-x64/fse.node" is installed via remote
added 68 packages from 67 contributors, removed 140 packages, updated 166 packages, moved 17 packages and audited 873712 packages in 77.977s
found 0 vulnerabilities
最後に念のため確認。
$ ncu
Checking (略)/gpwd/package.json
[====================] 2/2 100%
All dependencies match the latest package versions :)
アップデートが完了したらテストコードなどを動かして問題がないか確認をしてあげてください。お疲れ様でした!
その他
npmでアップデートの存在確認
実はnpmでもアップデートのチェックは可能です。プロジェクトのあるディレクトリへ移動し、npm outdated
を実行します。
$ npm outdated
Package Current Wanted Latest Location
commander 2.19.0 2.20.0 2.20.0 gpwd
jest 23.6.0 23.6.0 24.8.0 gpwd
このあとにpackage.jsonを手動で更新、npm install
しても良いかもしれません。
yarnでアップデート
yarnの場合、最初からncu的な機能が含まれているようです。
$ yarn upgrade-interactive
詳しくはドキュメントを確認くださいませ。
参考ページ
- https://www.npmjs.com/package/npm-check-updates
- https://yarnpkg.com/lang/ja/docs/cli/upgrade-interactive/
このブログを応援する
お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。
同じカテゴリの記事
- [Node.js] SequelizeでMySQLを利用する – その5「ToDoアプリ作成編」
- [Node.js] SequelizeでMySQLを利用する – その4「マイグレーション編」
- [Node.js] SequelizeでMySQLを利用する – その3「トランザクション編」
- [Node.js] SequelizeでMySQLを利用する – その2「SELECT文編」
- [Node.js] SequelizeでMySQLを利用する – その1「チュートリアル編」
- [JavaScript] クレジットカード番号から国際ブランドを特定する
- [JavaScript] クレジットカード番号が正しいか検証する
- [Node.js] ClamAVでウイルスチェック