2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

npm packageを一括更新してみましょう(npm outdated、npm update)

Last updated at Posted at 2024-01-17

1.問題

作成してから2年間アップデートしたことのないプロジェクト。
そのまま放置するのはお気の毒なので、パッケージをできるだけ最新のものに更新することにした。
一括更新する方法はないかな。

2.環境

npm packageを使用する環境すべて。

3.解決

npm outdatednpm updateを順番に実行。

4.詳細

4.1 npm outdatedとは

registryをチェックし、インストールしたpackageが古くなってないか確認する。
currentは現在インストール済みのバージョン。
wantedはpackage.jsonに記載されたsemver条件を満たす最新バージョン。
latestはregistryで最新tagついているpackage バージョン。

4.2 npm updateとは

tagとsemverを尊重してすべてのpackageを最新バージョンに更新する。

4.3 例示

package.jsonでbabel-nodeとaxiosに使用するpackageの範囲をsemverで指定して、
npm outdatedすると、wantedにはそれを反映した結果が表示される。
ここでnpm updateすると、wantedのバージョンがインストールされる。

package.json
  "dependencies": {
    "@babel/cli": "^7.14.8",
    "@babel/core": "^7.15.0",
    "@babel/node": "^7.4.5", // minor versionを自動更新
    "@babel/plugin-transform-runtime": "^7.15.0",
    "@babel/preset-env": "7.4.5",
    "aws-sdk": "^2.982.0",
    "axios": ">0.21.2", // 0.21.2を超えたバージョンに更新
    "bcrypt": "^5.0.1",
    "body-parser": "1.19.0",
    "dotenv": "^10.0.0",
    "express": "4.17.1",
    "express-session": "1.17.2",
    "mongoose": "^5.5.15",
    "multer": "^1.4.3",
    "multer-s3": "^2.9.0",
    "pug": "3.0.1",
    "sass": "^1.38.2"
  }
C:\Users\xxxx\xx\video-info-storage>npm outdated
Package            Current   Wanted       Latest  Location                        Depended by
@babel/node          7.4.5  7.22.19      7.22.19  node_modules/@babel/node        video-info-storage
@babel/preset-env    7.4.5    7.4.5       7.23.8  node_modules/@babel/preset-env  video-info-storage
axios               0.21.2    1.6.5        1.6.5  node_modules/axios              video-info-storage
body-parser         1.19.0   1.19.0       1.20.2  node_modules/body-parser        video-info-storage
dotenv              10.0.0   10.0.0       16.3.1  node_modules/dotenv             video-info-storage
express             4.17.1   4.17.1       4.18.2  node_modules/express            video-info-storage
express-session     1.17.2   1.17.2       1.17.3  node_modules/express-session    video-info-storage
mongoose           5.13.22  5.13.22        8.1.0  node_modules/mongoose           video-info-storage
multer               1.4.4    1.4.4  1.4.5-lts.1  node_modules/multer             video-info-storage
multer-s3           2.10.0   2.10.0        3.0.1  node_modules/multer-s3          video-info-storage
nodemon             1.18.4   1.18.4        3.0.3  node_modules/nodemon            video-info-storage
pug                  3.0.1    3.0.1        3.0.2  node_modules/pug                video-info-storage
sass-loader         12.6.0   12.6.0       14.0.0  node_modules/sass-loader        video-info-storage
webpack-cli         4.10.0   4.10.0        5.1.4  node_modules/webpack-cli        video-info-storage

5.関連知識

npm packageのバージョンアップデート範囲を指定したい(semver、^、~)

6.まとめ

npm packageを一括更新するにはnpm outdatedの後npm updateを実行。
package.jsonに指定したsemver範囲内で更新してくれる。

7.参考

npm package をアップデートしたい時の便利なコマンド
npm-outdated
npm-update
npm-checkを使ってnpm dependencyの管理

8.感じたこと

「一番最新のpackageならいつも正しい」とは思えない。
場合によってはlow versionのpackageの方がいいときがあるはず。
その判断基準が知りたいな。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?