package.json の各依存関係を最新バージョンに更新するには?

node.js npm


私は別のプロジェクトから package.json をコピーしましたが、これは新しいプロジェクトなので、依存関係をすべて最新のバージョンにバンプしたいと思っています。

一番簡単な方法は?

私が今知っている最良の方法は、 npm info express version を実行して、それぞれについてpackage.jsonを手動で更新することです。もっと良い方法があるはずです。

{
  "name": "myproject",
  "description": "my node project",
  "version": "1.0.0",
  "engines": {
    "node": "0.8.4",
    "npm": "1.1.65"
  },
  "private": true,
  "dependencies": {
    "express": "~3.0.3", // how do I get these bumped to latest?
    "mongodb": "~1.2.5",
    "underscore": "~1.4.2",
    "rjs": "~2.9.0",
    "jade": "~0.27.2",
    "async": "~0.1.22"
  }
}

更新5/1/19:6年後も、この問題の包括的な解決策としてnpm-check-updatesを引き続き維持しています。楽しい!




Answer 1 josh3736


npm-check-updatesがこれを実現する唯一の方法であるように見えます。

npm i -g npm-check-updates
ncu -u
npm install

npm <3.11の場合:

すべての依存関係のバージョンを * に変更してから、 npm update --save を実行します。(注:npmの最近の(3.11)バージョンでは壊れています)。

Before:

  "dependencies": {
    "express": "*",
    "mongodb": "*",
    "underscore": "*",
    "rjs": "*",
    "jade": "*",
    "async": "*"
  }

After:

  "dependencies": {
    "express": "~3.2.0",
    "mongodb": "~1.2.14",
    "underscore": "~1.4.4",
    "rjs": "~2.10.0",
    "jade": "~0.29.0",
    "async": "~0.2.7"
  }

もちろん、これは依存関係を更新する際の鈍いハンマーです。あなたが言ったように、プロジェクトが空で壊れるものが何もない場合は問題ありません。

一方、より成熟したプロジェクトで作業している場合は、アップグレードする前に依存関係の変更がないことを確認したいでしょう。

古くなっているモジュールを確認するには、単に npm outdated実行します。新しいバージョンが利用可能なインストール済みの依存関係が一覧表示されます。




Answer 2 Etienne


npm-check-updates は、すべての依存関係の最新バージョンでpackage.jsonを自動的に調整するユーティリティです

https://www.npmjs.org/package/npm-check-updatesを参照してください

$ npm install -g npm-check-updates
$ ncu -u
$ npm install 

[編集] npm の最新バージョンを使用している場合、これを行う少し煩わしくない(グローバルインストールを回避する)方法は次のとおりです。

$ npx npm-check-updates -u
$ npm install 



Answer 3 Michael Cole


最新のNPMに対応しました。

npm 2+(Node 0.12+)。


npm outdated
npm update
git commit package-lock.json

古代のnpm(2014年頃)。

npm install -g npm-check-updates
npm-check-updates
npm shrinkwrap
git commit package-lock.json

あなたのDEPSをシュリンクラップすることを確認してください、またはあなたは死んだプロジェクトを巻いてしまう可能性があります。先日、あるプロジェクトを引っ張り出してみたのですが、私の deps がすべて古くなっていたり、更新されていなかったり、めちゃくちゃだったりしたので、実行できませんでした。もしシュリンクラップしていれば、npm は私が必要としているものを正確にインストールしていたでしょう。


Details

ここまできた好奇心旺盛な人には、おすすめはこちら。

npm-check-updates または npm outdated を使用して、最新バージョンを提案してください。

# `outdated` is part of newer npm versions (2+)
$ npm outdated
# If you agree, update.  
$ npm update

#       OR

# Install and use the `npm-check-updates` package.
$ npm install -g npm-check-updates
# Then check your project
$ npm-check-updates
# If you agree, update package.json.
$ npm-check-updates -u

それからクリーンインストールをしてください (rmを使わずに依存性の警告を受けました)

$ rm -rf node_modules
$ npm install 

最後に、正確なバージョンを npm-shrinkwrap.jsonnpm shrinkwrap -shrinkwrap.jsonに保存します

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

これで、 npm installnpm-shrinkwrap.json の正確なバージョンを使用するようになります

npm-shrinkwrap.json をgitにチェックインすると、すべてのインストールでまったく同じバージョンが使用されます。

これは、開発から本番(誰も何も触らない)に移行するための方法です。

ps YarnがパッケージリストをFacebookに送信しています




Answer 4 laconbass


package.json を手動で開いて変更せずに、1つの依存関係を最新バージョンに更新するには、次のコマンドを実行します。

npm install {package-name}@* {save flags?}

i.e.

npm install express@* --save

参考までに、npm-install


拒否された編集についてユーザーVespakoenが述べたように、この方法で複数のパッケージを一度に更新することも可能です。

npm install --save package-nave@* other-package@* whatever-thing@*

彼はまた、 npm outdated に基づくシェルのワンライナーを支持しています。コードと説明については、編集を参照してください。


PS:そのようなことのために package.json を手動で編集する必要も嫌いです;)




Answer 5 GollyJer


IDEとしてVisual Studio Codeを使用している場合、これは package.json の更新をワンクリックプロセスにする楽しい小さな拡張です。

バージョンレンズ

enter image description here