2337

別のプロジェクトからコピー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"
  }
}

Yarn固有のソリューションについては、このスタック オーバーフロー スレッドを参照してください

4

34 に答える 34

2783

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

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

npm <3.11:

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

前:

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

後:

  "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ください。新しいバージョンが利用可能なインストール済みの依存関係が一覧表示されます。

Yarn固有のソリューションについては、この StackOverflow answer を参照してください

于 2013-04-18T03:35:05.653 に答える
422

npm v2+ 用に更新

npm 2+ (ノード 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

必ず dep をシュリンクラップしてください。そうしないと、プロジェクトが死んでしまう可能性があります。先日プロジェクトを引っ張り出しましたが、依存関係がすべて古くなっている/更新されていない/混乱しているため、実行されませんでした。もし私がシュリンクラップしていたら、npm はまさに私が必要としていたものをインストールしたでしょう。


詳細

ここまでたどり着いた好奇心旺盛な人には、次のことをお勧めします。

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.jsonしますnpm shrinkwrap

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

今、npm install正確なバージョンを使用しますnpm-shrinkwrap.json

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

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

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

于 2015-06-02T22:29:34.757 に答える
219

手動で開いて変更することなく、 1 つの依存関係を最新バージョンに更新するpackage.jsonには、次を実行できます。

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

すなわち

npm install express@* --save

参考までに、npm-install


更新: 最近のバージョンでは、代わりに最新のフラグが必要になる場合があります。npm install express@latest


拒否された編集でユーザーVespakoenが指摘したように、次の方法で複数のパッケージを一度に更新することもできます。

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

彼はまた、npm outdated. コードと説明については、編集を参照してください。


PS: また、そのようなものを手動で編集する必要もありpackage.jsonません ;)

于 2014-04-30T14:51:12.420 に答える
69

これは npm 1.3.15 以降で機能します。

"dependencies": {
  "foo": "latest"
}
于 2014-01-21T22:35:57.067 に答える
47

上記の最良の回答で見つけた唯一の注意点は、モジュールを最新バージョンに更新することです。これは、不安定なアルファ ビルドに更新される可能性があることを意味します。

その npm-check-updates ユーティリティを使用します。私のグループはこのツールを使用し、安定したアップデートをインストールすることで効果的に機能しました。

Etienneが上で述べたように:これをインストールして実行します:

$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install 
于 2015-02-11T23:37:53.260 に答える
25

これは、セマンティック バージョン番号を照合するための基本的な正規表現です。これにより、それらすべてをアスタリスクにすばやく置き換えることができます。

セマンティック バージョンの正規表現

([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)

使い方

JSON ファイルで置き換えるパッケージ バージョンを選択します。

スクリーンショット:置換するテキストを選択します

上記の正規表現を入力し、正しいテキストと一致することを確認します。

スクリーンショット:上記の semver 正規表現を入力してください

すべての一致をアスタリスクに置き換えます。

スクリーンショット:パッケージ バージョンをアスタリスクに置き換えます

走るnpm update --save

于 2016-03-04T15:21:20.107 に答える
12

アップグレード!

npm outdated に基づいて、updtr は最新バージョンをインストールし、依存関係ごとに npm test を実行します。テストが成功すると、updtr は新しいバージョン番号を package.json に保存します。ただし、テストが失敗した場合、updtr はその変更をロールバックします。

https://github.com/peerigon/updtr

于 2016-05-27T22:24:01.040 に答える
9

の更新に使用する必要があったpackage.jsonコマンドNPM 3.10.10:

npm install -g npm-check-updates
ncu -a
npm install

バックグラウンド:

@ josh3736 の最新のコマンドを使用していましたが、package.json更新されていませんでした。次に、実行時に説明テキストに気付きましたnpm-check-updates -u

次の依存関係は、宣言されたバージョン範囲によって満たされますが、インストールされているバージョンが遅れています。npm update を使用すると、パッケージ ファイルを変更せずに最新バージョンをインストールできます。とにかくパッケージ ファイルの依存関係を更新したい場合は、ncu -a を実行します。

npm-check-updates のドキュメントを読むと、違いがわかります。

https://www.npmjs.com/package/npm-check-updates

-u, --upgrade: パッケージファイルを上書き

-a, --upgradeAll: 宣言された semver 依存関係を満たす最新バージョンの依存関係も含めます

ncu は、次npm-check-updatesのように入力したときにメッセージに表示されるエイリアスnpm-check-updates -uです。

[INFO]: You can also use ncu as an alias
于 2017-11-01T13:02:35.993 に答える
5

バージョンを切り替えるとモジュールが壊れる可能性があるため、上記のコマンドは安全ではありません。代わりに、次のことをお勧めします

  • コマンドを使用して、実際の現在のノード モジュールのバージョンを package.json に設定しますnpm shrinkwrap
  • https://github.com/bahmutov/next-updateコマンド ライン ツールを使用してテストを中断しない場合は、各依存関係を最新バージョンに更新します。
npm install -g next-update
// パッケージから
次回更新
于 2014-11-02T16:43:23.000 に答える
2

Github を使用している場合は Greenkeeper。https://greenkeeper.io/

これは Github との統合であり、セットアップは非常に簡単です。インストールすると、指定したリポジトリ (または必要に応じてすべて) にプル リクエストが自動的に作成され、手動で何かを行う必要なく、コードが常に最新の状態に保たれます。その後、PR は CI サービスでビルドをトリガーする必要があり、チェックの成功または失敗に応じて、何が問題を引き起こしているのか、または CI が合格したときに単純に PR をマージするかを突き止めることができます。

グリーンキーパー PR 1 グリーンキーパー PR 2

下部では、最初のビルドが最初に失敗し、コミット (「ノード v6.9 へのアップグレード」) 後にテストに合格したため、最終的に PR をマージできたことがわかります。絵文字もたくさん付いています。

別の代替手段はhttps://dependencyci.com/ですが、集中的にテストしませんでした。一見したところ、Greenkeeper は一般的な IMO で見栄えがよく、統合も優れています。

于 2017-01-08T23:22:08.280 に答える
2

追加パッケージなしのソリューション

すべての依存関係のバージョンを次のように変更し*ます。

"dependencies": {
    "react": "*",
    "react-google-maps": "*"
  }

次に実行しnpm update --saveます。

一部のパッケージは更新されましたが、一部は更新されていませんか?

"dependencies": {
    "react": "^15.0.1",
    "react-google-maps": "*"
  }

これはトリッキーな部分です。これは、「反応」のローカルバージョンが最新のものよりも低かったことを意味します。この場合、npm は「react」パッケージをダウンロードして更新しました。ただし、「react-google-maps」のローカル バージョンは最新のものと同じです。

変更せずに「更新」したい場合*は、これらのモジュールをnode_modulesフォルダーから削除する必要があります。

例: 削除しnode_modules/react-google-mapsます。

最後にもう一度実行しnpm update --saveます。

"dependencies": {
    "react": "^15.0.1",
    "react-google-maps": "^4.10.1"
  }

npm update --save-dev開発依存関係を更新したい場合は、忘れずに実行し てください。

于 2016-04-27T14:29:49.353 に答える