web-dev-qa-db-ja.com

npmチェックして必要ならばパッケージをアップデートする

私たちは、KarmaテストランナーをTeamCityに統合する必要があります。そのために、システムエンジニアに小さなスクリプト(powershellなど)を提供したいと思います。

  1. いくつかの設定ファイルから希望のバージョン番号を選択します(karma.conf.jsの中にコメントとして入れることができると思います)

  2. npmのグローバルレポジトリに定義されたバージョンのカルマランナーがインストールされているか確認する

  3. そうでない場合、またはインストールされているバージョンが必要以上に古い場合:正しいバージョンを選択してインストールします。

  4. 実行してください:karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run

それで私の本当の質問は、「インストールされているパッケージのバージョンが欲しいのなら、どうやってスクリプトをチェックインすることができるのか」ということです。チェックするべきでしょうか、それとも毎回npm -g installを呼ぶのが安全なのでしょうか。

他の設定値に互換性がなくなる可能性があるため、常に最新の利用可能なバージョンを確認してインストールする必要はありません

339
iLemming

プロジェクト内のいずれかのモジュールが「古い」かどうかを確認するには、次のようにします。

npm outdated

'outdated'は、package.jsonに定義されているすべてのモジュールを調べて、NPMレジストリーに新しいバージョンがあるかどうかを確認します。

これは、新しいバージョン(0.2.7)が存在するため、xml2js(つまり、現在のディレクトリのnode_modules /にある)が古いことを示す例です。

[email protected] node_modules/xml2js current=0.2.6

古いモジュールをチェックして新しいバージョンをインストールしたい場合は、次のようにします。npm update(すべてのモジュール用)またはnpm update xml2js(xml2jsのチェック/更新のみ)

NPMの資料を見てください。

434
dublx

npm outdatedは更新すべきパッケージを識別し、npm update <package name>は各パッケージの更新に使用できます。しかし、npm update <package name>はあなたのpackage.jsonのバージョンを更新しませんが、これは問題です。

最善のワークフローは次のとおりです。

  1. 期限切れのパッケージを識別する
  2. Package.jsonのバージョンを更新する
  3. npm updateを実行して各パッケージの最新版をインストールします

このワークフローを支援するためにnpm-check-updatesを調べてください。

  • インストール npm-check-updates
  • どのパッケージが古くなっているかをリストするためにnpm-check-updatesを実行してください(基本的にnpm outdatedを実行するのと同じこと)
  • npm-check-updates -uを実行してpackage.json内のすべてのバージョンを更新します(これがマジックソースです)。
  • 通常どおりnpm updateを実行して、更新されたpackage.jsonに基づいて新しいバージョンのパッケージをインストールします。
311
Erik Olson

npm-check と呼ばれる "新鮮な"モジュールもあります。

npmチェック

古くなった依存関係、正しくない未使用の依存関係を調べます。

enter image description here

また、依存関係を更新するための便利な対話的方法も提供します。

126
alecxe
  • 単一のローカルパッケージを更新するには

    1. まず古いパッケージを見つけてください。

      npm outdated

    2. 次に、手動で必要なパッケージを次のように更新します。

      npm update --save package_name

この方法では、ローカルのpackage.jsonファイルを更新する必要はありません。

これはあなたのパッケージを最新バージョンに更新することに注意してください。

  • あなたのpackage.jsonファイルに何らかのバージョンを書き、次のようにしたら:

    npm update package_name

    この場合、あなたがあなたのpackage.jsonファイルに書いたバージョンに関する次の安定版(欲しい)だけを手に入れるでしょう。

そしてnpm list (package_name)を使えば、あなたのローカルパッケージの現在のバージョンを知ることができます。

60
gugol

簡単な一歩:

$ npm i -g npm-check-updates && ncu -u && npm i

それがすべてです。 package.json内のすべてのパッケージバージョンが最新になります。

編集する

ここで何が起きてるの?

  1. アップデートをチェックするパッケージをインストールします。

  2. このパッケージを使ってあなたのpackage.json内のすべてのパッケージバージョンを更新します(-aは--updateAllの略です)。

  3. 新しいバージョンのパッケージをすべてインストールします。

45
Matt

期限切れのパッケージを確認する

npm outdated

更新するパッケージをチェックして選択する

npx npm-check -u

npm oudated img

npx npm-check -u img

7
Long Tran

一部の依存関係マニフェストファイルの脆弱性を更新または修正するためのNPMコマンド

  • 以下のコマンドを使用して、ノードモジュールの古いものや脆弱性をチェックしてください。

    npm audit

  • 脆弱性が見つかった場合は、以下のコマンドを使用してすべての問題を解決してください。

    npm audit fix

  • うまくいかない場合は、

    npm audit fix -f、このコマンドはほとんどすべての脆弱性を修正します。いくつかの依存関係またはdevDependenciesは package-lock.json ファイルにロックされているので、強制的に更新するために-fフラグを使用します。

  • 強制監査による修正を使用したくない場合は、 package-lock.json および package.json ファイルで依存関係のバージョンを手動で修正することができます。それから `npm update && npm upgrade 'を実行してください。

7
Smit Patel

Npmパッケージを(グローバルにもローカルにも)インストールするときは、@version構文を使ってインストールするバージョンを定義することで、特定のバージョンを定義できます。

言い換えると、:npm install -g [email protected]を実行すると、0.9.2だけがインストールされ、すでに存在する場合は再インストールされません。

アドバイスの言葉として、できる限りどこでもグローバルnpmインストールを避けることをお勧めします。依存関係がbinファイルを定義している場合、それが./node_modules/.bin/にインストールされることを多くの人は認識していません。多くの場合、package.jsonで定義されているインストール済みモジュールのローカルバージョンを使用するのは非常に簡単です。実際、npmスクリプトはあなたのパスに./node_modules/.binを追加します。

例として、npm install && npm testを実行すると私のpackage.jsonで定義されているバージョンのkarmaをインストールし、testスクリプトを実行するときにそのバージョンのkarmaを使用するpackage.jsonがあります。 :

{
 "name": "myApp",
 "main": "app.js",
 "scripts": {
   "test": "karma test/*",
 },
 "dependencies": {...},
 "devDependencies": {
   "karma": "0.9.2"
 }
}

これにより、package.jsonを使用して使用するkarmaのバージョンを定義し、CIボックスでその設定をグローバルに保持する必要がなくなります。

5
addisonj

追加のパッケージはありません。古くなったものをチェックして更新するだけで、このコマンドは以下を実行します。

npm install $(npm outdated | cut -d' ' -f 1 | xargs -I '$' echo '$@latest' | xargs echo)

1
MikeMajara

1つのパッケージだけを更新するには、NCUをインストールしてから、そのパッケージに対してのみ実行します。これは本当の最新のものにぶつかるでしょう。

npm install -g npm-check-updates

ncu -f your-intended-package-name -u
1
regisbsb

[email protected] +の時点で、次のことが簡単にできます。

npm update <package name>

これにより、package.jsonファイルが自動的に更新されます。最新バージョンを手動で更新してからnpm update <package name>を使用する必要はありません

あなたはまだ古い振る舞いを得ることができます

npm update --no-save

参照

1
adiga