package.jsonの各依存関係を最新バージョンに更新するにはどうすればよいですか?


2011

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

UPDATE 5/1/19:6年後、私はこの問題の包括的な解決策としてnpm-check-updatesをまだ維持しています。楽しい!


2
この問題に対する別のアプローチを見るのは素晴らしいことです。Salitaの出力が本当に好きです。私が現在提供しているツールgithub.com/tjunnone/npm-check-updatesのいくつかの優れた機能は、バージョン管理のセマンティクス(1.xまたは> 2.1.0など)の保持とname / regex / devDeps-onlyによるフィルタリングです。
Raine Revere

1
ここでいくつかのより良い答えがある必要があります。明らかに依存関係の解決では、常にすべての最新バージョンを入手できるわけではありません。モジュールの最新バージョンの最大数を最大化することは、まさにそれであり、ある種の最適化問題です。しかし、NPMは、どのモジュールを他のモジュールよりも最新にしたいかを認識していません。npm update --latest xyzのようなものがあったらいいですね。ここで、xyzはできる限り最新にしたいモジュールであり、他のすべてのモジュールは最新の互換バージョンで続きます。
Alexander Mills

2
npmは、それぞれに適切な依存関係をダウンロードすることにより、共有される依存関係間のバージョンの競合を正しく処理します。したがって、Dep AがDep C v1.0.0に依存し、Dep BがDep C v2.0.0に依存している場合、それらはそれぞれ適切にインストールおよび使用されます。したがって、必要な最新のパッケージを自由にインストールできます。
Raine Revere

これを試してアップグレードを強制しますnpm outdated | sed '1d; s/ .*/@latest/' | xargs npm i --save
。– miorey

私はいつもこの答えをチェックしています。しかし、私はそれがグーグルの結果でずれているのを見ます。うまくいけば、このコメントが関連性を押し上げるのに役立つでしょう!!
ザック・スミス

回答:


2391

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

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

npm <3.11の場合:

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

前:

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


13
@thefourtheye:通常、package.jsonのままに *しないでください。新しいモジュールバージョンが自動的にインストールされ、アプリが壊れるような変更が自動的にインストールされる可能性があります。--saveここで使用しているので、*は各パッケージの現在のバージョンに置き換えられます。
josh3736 2013

50
これを機能させることができません。この回答が投稿されてからnpmで何か変更はありましたか?ワイルドカードを使用するとnpm install --save、ワイルドカードがに残りpackage.jsonます。
davidtheclark 2013

15
残念ながら、update私にとっても使用は機能しません。まだワイルドカードが残っています。これについてあなたが知っているドキュメント、または私が見るかもしれない他のリソースはありますか?
davidtheclark 2013

120
少し古いですが、それは他の人々を助けるかもしれません:github.com/tjunnone/npm-check-updates | npm install -g npm-check-updatesインストールに使用してからnpm-check-updates、依存関係に更新があるかどうかを確認しnpm-check-updates -u、package.jsonバージョンを更新します。その後、それだけnpm installで新しいバージョンがダウンロードされます。
RaphaelDDL 2014年

5
あなたの問題はおそらく、のnpm update --save代わりに入力して開発パッケージを更新しようとしているという事実から来ていますnpm update --save-dev
adriendenat 2014

1035

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 

135
これは、npmコマンド自体を介してネイティブで使用できるはずです。これまでのところ、依存関係を更新するための最善のソリューションです。
Mohammad Arif 2014年

7
ネイティブのnpmの一部である必要があり、完全に同意します。ただし、そうではなく、このソリューションは簡単に利用できます。ありがとうございました。
ステファン

2
仲間がこれをコアnpmに入れるために[ハード]を押していると思いますか?
enorl76 2015年

3
@Batman以前にインストールしていなかった場合は、はい。それ以外の場合は、npm updateを使用します。ncuは、package.jsonを更新するだけです。「node_modules」をインストールまたは更新しません。
Muzaffer

1
役に立たないパッケージncu -a。package.jsonも更新せずに、パッケージの一部のみをで更新します。
Alexander Kim、

385

最新のNPMに合わせて更新

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

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

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

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


13
これが実際の正解です。何十ものdepsがインストールされている場合、これはより良い方法です。AngelS
. Moreno

6
経験上、常に一度にすべてのパッケージを更新するというアドバイスは危険な場合があります。
alphadogg

1
確かに。npm-shrinkwrap.jsonソースを作成してソースに入れ、更新するたびにコミットすると、いつでも「元の場所に戻る」ことができます。始めたとき、シュリンクラップ機能を見過ごしていました。
Michael Cole

21
これは質問に答えませ。問題は、最新バージョンを更新する方法です。npm update最新バージョンではなく、semverバージョンへの更新のみ。
gman 2016

1
に代わるものがあれば答えてもらえますyarn upgrade package@versionか?
Ben Sinclair 2017

201

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

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

すなわち

npm install express@* --save

参考までに、npm-install


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

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

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


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


8
このソリューションは素晴らしいです。新しいモジュールをインストールせずに、単一のパッケージを明示的に最新バージョンに更新する迅速かつ簡単な方法。私はnpm-check-updatesが好きですが、すべてのパッケージを最新の状態に維持しようとします。
Chev 2015

これは私にはうまくnpm install react-native-image-picker@* --save
ハリー・モレノ

1
@Chev:ncuはで単一または複数のパッケージを簡単にターゲットにできますncu express mocha chai。でパッケージを除外することもできますncu -x mocha。上記が単一のパッケージを更新するための最も簡単な解決策であることに同意します。
Raine Revere、2016

2
おそらくより最近のドキュメントから、同じようなものを使用しました...「*」の代わりに「最新」を使用しますnpm install {package-name}@latest {save flags}
Drew Thomas

1
このソリューションは素晴らしいものであり、まさに私が探しているものです。予期しない問題につながる可能性のある他のすべての依存関係を更新する必要なく、特定のパッケージを更新できます。
Dany Wehbe

90

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

バージョンレンズ

ここに画像の説明を入力してください


2
ここには崇高なテキスト3バージョンがあります:github.com/yavorsky/Bump、少し遅いです。
アレクサンダーキム

4
美しく機能しました。誰にもわかりにくい場合は、package.jsonのバージョンを最新のnpmリポジトリバージョンと照合し、バージョンをクリックしてpackage.jsonのテキストコンテンツを更新できます。次に、「npm update」を実行して、npmに新しいバージョンをインストールするよう指示する必要があります。
MattG

2
組み込みのVisual Studioのコードマウスホバリングによるパッケージエントリ上での簡単な記述とパッケージ依存関係の最新バージョンを見ることが既に可能であることに注意してください:ビルトイン・パッケージのバージョンヒント
GürolCanbek

1
コードレンズリンクをクリックしても、パッケージは自動的にインストールされないことに注意してください。package.jsonバージョンのテキストを更新するだけです。
RA。

59

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

"dependencies": {
  "foo": "latest"
}

10
知ってよかった。私の推測では、下位互換性のないバージョンに自動的に更新されるため、これは一般的に本番サイトでは悪い習慣になると思います。'〜2'構文は、特定のメジャーバージョン番号に固定します。これは、semver以降のバージョンには下位互換性があります。
Raine Revere

1
あなたは常に製品のdepを凍結することができます。そのためのコマンドがあります。-2大丈夫ですね。
Tobiasz Cudnik 2014

5
私はこれを一緒に使っnpm shrinkwrapてdepsをフリーズするのが好きです。
daniellmb 14

これを行うと、そのパッケージの実際のバージョンをどのように知ることができますか?と呼ばれるエントリが"react": "16.9.0"あり、それに最新のものを追加して実行したとしnpm iましょう。この後、どのバージョンの反応がプロジェクトに現在あるかをどのように確認しますか?以来、"react":"latest"私はやった私のpackage.jsonに残っていただきましたがある、ない数さえ後npm i
theprogrammer

52
  1. *不安定版を含む最新リリースのバージョンとして使用
  2. latest最新の安定バージョンのバージョン定義として使用
  3. 次を使用して、package.jsonを最新の安定したバージョン番号で正確に変更します。 LatestStablePackages

次に例を示します。

"dependencies": {
        "express": "latest"  // using the latest STABLE version
    ,   "node-gyp": "latest"    
    ,   "jade": "latest"
    ,   "mongoose": "*" // using the newest version, may involve the unstable releases
    ,   "cookie-parser": "latest"
    ,   "express-session": "latest"
    ,   "body-parser": "latest"
    ,   "nodemailer":"latest"
    ,   "validator": "latest"
    ,   "bcrypt": "latest"
    ,   "formidable": "latest"
    ,   "path": "latest"
    ,   "fs-extra": "latest"
    ,   "moment": "latest"
    ,   "express-device": "latest"
},

2
これが最良の答えです。
Peza 2018

1
これは受け入れられるべき答え
でした

それでも、最も安全な方法です。いい答えです。
クレウィス

43

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

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

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

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

3
rm -rf node_modules以前npm installは、いくつかの依存関係の警告が表示されなくなりました。
マイケルコール

1
package.jsonに「*」がある場合に備えて、npm-check-updatesを実行する前に「0」または「0.0」または「0.0.0」に変更してください。
igorpavlov 2015年

これが最も簡単な方法です。面倒なし、面倒なし。魅力のように機能します。すべての担当者が更新され、適切にインストールされます。Thx
Yoraco Gonzales

38

利用可能な新しいバージョンがあるパッケージを確認するには、次のコマンドを使用します。

npm outdated

1つの依存関係のみを更新するには、次のコマンドを使用します。

npm install yourPackage@latest --save

例えば:

私のpackage.jsonファイルには依存関係があります:

"@progress/kendo-angular-dateinputs": "^1.3.1",

それから私は書くべきです:

npm install @progress/kendo-angular-dateinputs@latest --save

いいですが、-save(または--save-dev)は更新に必須ではないようです。
Burrich

35

私はnpm-upgradeがどのように機能するかが本当に好きです。これは、すべての依存関係を確認し、最新バージョンと比較して現在のバージョンを確認し、必要に応じて更新できるシンプルなコマンドラインユーティリティです。

npm-upgradeプロジェクトのルート(package.jsonファイルの横)で実行した後のスクリーンショットを次に示します。

npmアップグレードの例

依存関係ごとに、アップグレード、無視、変更ログの表示、またはプロセスの終了を選択できます。これまでのところ、うまくいきました。

編集:明確にするために、これはコマンドが機能する前にインストールする必要があるサードパーティのパッケージです。npm自体には付属していません。

npm install -g npm-upgrade

次に、package.jsonファイルを持つプロジェクトのルートから:

npm-upgrade

ドキュメントを見ると、ローカルの依存関係でのみ機能するように構築されているようです
manncito

2
うん、ちょうど他の人に言及しました。答えに対する不満はありません:)
Martin Schneider

2
うーん、npm-upgrade私にnpm upgradeはうまくいきませんでしたが、うまくいきました。package.jsonファイルが更新され、まさに私が探していたものでした。
Grandizer、2018年

面白いですね、エラーはありましたか?使用の背後にある考え方npm-upgradeは、アップグレードされているものを正確に確認し、アップグレードするものを選択することです。npm upgradeほとんどの人にとってはうまくいくかもしれませんが、アップグレードするときにもう少し細かく制御する必要がある場合があります。
manncito 2018年

1
これをnpx:で使用することもできますnpx npm-upgrade。:)
X線

22

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

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

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

使い方

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

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

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

スクリーンショット:上記のsemver正規表現を入力

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

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

走る npm update --save


パッケージ名に数字がある場合はありません。例:babel-preset-es2015、babel-preset-stage-0、hex2rgba。たぶんbegginingで引用/二重引用符を検索:('|")([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)
rofrol

1
サポート複数のキャレット(EJ崇高テキスト)を使用すると、最初に選択することができ、任意のエディタで:キーを押しctrl+d、あなたがそれらをすべて選択するまで、バージョン番号(キーを押して右の2倍の矢印)を押しCTRLスペースに行き、その後、複数回、その後、書き込み"*"
イワンCastellanosのを

15

最近、guntfile.jsの魔法のためにnpmとpackage.jsonを使用していたいくつかのプロジェクトを更新する必要がありました。次のbashコマンド(複数行コマンド)は私にとってうまくいきました:

npm outdated --json --depth=0 | \
jq --ascii-output --monochrome-output '. | keys | .[]' | \
xargs npm install $1 --save-dev

ここでのアイデア:npm outdated出力をjsonとしてパイプするにはjq
(jqはjsonコマンドラインパーサー/クエリツールです)
(の--depth引数の使用に注意してくださいnpm outdated
jqは出力を最上位のパッケージ名のみにストリップします。
最後に、xargsは各LIBRARYNAMEを一度に1つずつnpm install LIBRARYNAME --save-devコマンドに入れます。

上記は私がマシンで実行しているときに機能したものです:node = v0.11.10 osx = 10.9.2 npm = 1.3.24

これは必須です:
xargs http://en.wikipedia.org/wiki/Xargs(私のマシンにネイティブと思います)

jq http://stedolan.github.io/jq/(私はでインストールしましたbrew install jq

注:IのみJSONキーのpackage.jsonの内側に更新されたライブラリの保存devDependancies使用することにより--save-dev、あなたはかなり可能私のプロジェクトの要件ではありませんでした。

その後、簡単な方法ですべてが肉汁であることを確認します

npm outdated --depth=0

また、次のコマンドを使用して、現在インストールされているトップレベルのライブラリバージョンを確認できます。

npm list --depth=0

私はJQを愛し、ほぼ毎日それを使用していますが、この目的のために、私はシンプルを使用awk代わりに:npm outdated --depth=0 | grep -v "^Package" | awk '{print $1}' | xargs npm install $1 --save-dev
Qorbani

1
私は使用していますcat package.json|jq -r '.devDependencies|keys|map(.+"@latest")|@sh'|xargs npm install --save-dev
Richard Ayotte、2015年

15

美しい(端末用)インタラクティブレポートインターフェイスを介して穏やかなアプローチを使用したい場合は、npm-checkの使用をお勧めします。

ハンマーのようなものではなく、依存関係の更新についての必然的な知識と制御を提供します。

次のスクリーンショット(npm-checkのgitページからの抜粋)を次に示します。

ここに画像の説明を入力してください


14

この機能はで導入されましたnpm v5npm install -g npm@latestおよびを使用してnpmに更新

更新する package.json

  1. 削除/node_modulesしてpackage-lock.json (if you have any)

  2. 実行しますnpm update。これにより、依存関係package.jsonがsemverに基づいて最新のものに更新されます

最新バージョンに更新します。あなたは一緒に行くことができますnpm-check-updates


13

ヤーンを使用する場合、次のコマンドはすべてのパッケージを最新バージョンに更新します。

yarn upgrade --latest

彼らのドキュメントから:

このupgrade --latestコマンドは、upgradeコマンドと同じようにパッケージをアップグレードしますが、package.jsonで指定されたバージョン範囲を無視します。代わりに、最新のタグで指定されたバージョンが使用されます(メジャーバージョン間でパッケージをアップグレードする可能性があります)。


1
で、依存関係は更新されませんpackage.json- github.com/yarnpkg/yarn/issues/4390
Vandesh

13

npmバージョン5.2.0以降では、グローバルnpmレジストリやローカルアプリケーションに追加のパッケージをインストールせずに、これを1行で実行する方法があります。これはnpx、npmにバンドルされている新しいユーティリティを利用して行うことができます。(詳細については、ここをクリックしてください。

プロジェクトのルートで次のコマンドを実行します。

npx npm-check-updates -u && npm i

私はこれを試してみましたがnpm install、実際に動作します...ただし、実際に新しい依存関係をダウンロードするために実行する必要がありました。だから私は何かが欠けていない限り、package.jsonを更新するだけだと思います
owsega

@owsega、あなたは絶対的に正しいです、ありがとう!npm install依存関係が更新された後にも実行されるように私の回答を変更しました。
ilyakam

13

私はnpm-checkこれを達成するために使用します。

npm i -g npm npm-check
npm-check -ug #to update globals
npm-check -u #to update locals

ここに画像の説明を入力してください

正確なバージョン番号を保持するもう1つの便利なコマンドリスト package.json

npm cache clean
rm -rf node_modules/
npm i -g npm npm-check-updates
ncu -g #update globals
ncu -ua #update locals
npm i

それはだncu -uといないncu -ua最後から二番目の行に。1文字の変更が許可されていないため、編集できません。ちなみにとても役に立ちました。
Sohail Ahmed

10

更新!

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

https://github.com/peerigon/updtr


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

npm-check-updates v3では、これ-aがデフォルトの動作であり、package.jsonの上書きは-uオプションにのみ任されています。
Raine Revere、

8

を使用している場合yarnyarn upgrade-interactiveは非常に洗練されたツールで、古い依存関係を表示してから、更新する依存関係を選択できます。

Yarnを使用するその他の理由npm。へえ。


糸は速く動いていて、すでに1.0に達していて、使うのがとても楽しいです。これは、新しく選択された答えになるはずです。
Josh Habdas 2017

1
で、依存関係は更新されませんpackage.json- github.com/yarnpkg/yarn/issues/4390
Vandesh

5

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

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

1
下位互換性のない変更は、アクティブなプロジェクトに対して保護する必要があります。OPは、より多くの新しいプロジェクトの開始に関係している必要はなく、後に今のものを壊すからの仕事に最新バージョンを持つことを。
Raine Revere、2014

3

npm 5とノード8を使用している場合は、次のコマンドを試してください

npm update --save


2
updateコマンドは、元の定義を超えて依存関係をぶつけていないようです。場合はpackage.json宣言し"1.2.3"、正確にあなたが得ることはありません1.2.4。それは良いかもしれませんし悪いかもしれません:)
arolvaroGonzález'17年

3

次のコード(これは受け入れられました)は、「時間がかかりすぎる」などと書いて何もしませんでした。おそらくグローバルフラグを使用することが問題でした、idk。

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

私はテキストエディターを使用し、代わりに半手動のアプローチに従うことにしました。

私の開発依存関係からpackage.jsonメモ帳++テキストエディターにこのようなリストをコピーしました(かなり長い):

"browserify": "10.2.6",
"expect.js": "^0.3.1",
"karma": "^0.13.22",
"karma-browserify": "^5.2.0",

検索モードを正規表現に設定し、^\s*"([^"]+)".*$パターンを使用してパッケージ名を取得し、に置き換えましたnpm uninstall \1 --save-dev \nnpm install \1 --save-dev。「すべて置換」をクリックしました。オプトはこれでした:

npm uninstall browserify --save-dev 
npm install browserify --save-dev
npm uninstall expect.js --save-dev 
npm install expect.js --save-dev
npm uninstall karma --save-dev 
npm install karma --save-dev
npm uninstall karma-browserify --save-dev 
npm install karma-browserify --save-dev

コピーしてbashに戻し、Enterキーを押します。すべてがアップグレードされ、問題なく動作しました。それで全部です。

"browserify": "^16.1.0",
"expect.js": "^0.3.1",
"karma": "^2.0.0",
"karma-browserify": "^5.2.0",

たまにしかやらなくてはならないので大したことではないと思いますが、を解析しpackage.jsonてパッケージをアップグレードするスクリプトを簡単に書くことができます。この方法の方が良いと思います。たとえば、現在のバージョンのlibを保持するなど、特別なものが必要な場合はリストを編集できます。


1
npm-check-updatesでは、ターミナルのハングはWindowsの既知の問題です。--packageFile package.jsonstdinを待たないように追加してみてください。
Raine Revere、

@RaineRevereありがとう!
inf3rno 2019年


3

NPMの最新バージョンの別の解決策を見つけました。私がやりたいことは、すべての "*"依存関係を明示的な最新のバージョン番号に置き換えることです。議論された方法のどれも私のために働いていません。

私がしたこと:

  1. すべての「*」を「^ 0.0.0」に置き換えます
  2. 走る npm-check-updates -u

package.jsonのすべてが最後のバージョンに更新されます。


3

グローバルnpm-check-updatesをインストールしたくない場合は、次のコマンドを実行するだけです。

node -e "const pk = JSON.parse(require('fs').readFileSync('package.json', 'utf-8'));require('child_process').spawn('npm', ['install', ...Object.keys(Object.assign({},pk.dependencies, pk.devDependencies)).map(a=>a+'@latest')]).stdout.on('data', d=>console.log(d.toString()))"

2

代替は

"dependencies":{
    "foo" : ">=1.4.5"
}

npm updateを使用するたびに、自動的に最新バージョンに更新されます。バージョン構文の詳細については、https//www.npmjs.org/doc/misc/semver.htmlを確認してください。


バージョン管理の1つの理由は、新しいメジャーバージョンからの下位互換性のない変更を防ぐためです。このバージョン番号または「*」バージョン番号を使用しないことをお勧めします。OPは、いつ発生するかについての制御を維持しながらプロセスを緩和することに関連しています。
Raine Revere 2014

2

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

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

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

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

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

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

これはトリッキーな部分です。つまり、ローカルバージョンの "react"が最新バージョンよりも低いということです。この場合、npmは「反応」パッケージをダウンロードして更新しました。ただし、「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開発の依存関係を更新したい場合は、実行することを忘れないでください 。


1

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

これはGithub統合であり、設定は非常に簡単です。インストールすると、指定したリポジトリ(または必要に応じてすべて)にプルリクエストが自動的に作成され、コードを常に最新の状態に保つことができます。手動で行う必要はありません。次に、PRはCIサービスのビルドをトリガーする必要があり、成功または失敗したチェックに応じて、問題のトリガーとなっている原因や、CIパスが単にPRをマージするタイミングを把握し続けることができます。

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

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

別の選択肢はhttps://dependencyci.com/ですが、集中的にテストしていません。一見したところ、Greenkeeperは一般的なIMOで見栄えがよくなり、統合が改善されました。


1
  • npmが古い
  • npmアップデート

アプリと互換性のある最新の必要なバージョンを取得する必要があります。しかし、最新バージョンではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.