646

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チェックを行う必要がありますか、それとも毎回電話しても安全ですか?

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

4

16 に答える 16

853

プロジェクト内のモジュールが「古い」かどうかを確認するには:

npm outdated

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

たとえば、新しいバージョン (0.2.7) が存在するため、(現在のプロジェクトにある) は古くなっているとしますxml2js 0.2.6node_modules次のように表示されます。

xml2js@0.2.7 node_modules/xml2js current=0.2.6

すべての依存関係を更新するには、これが望ましいと確信している場合:

npm update

または、次のような単一の依存関係を更新するにはxml2js:

npm update xml2js

package.jsonバージョン番号を更新するには、次の--saveフラグを追加します。

npm update --save
于 2013-05-13T23:40:46.637 に答える
433

npm outdated更新する必要があるパッケージを識別し、npm update <package name>各パッケージの更新に使用できます。ただし、npm@5.0.0 より前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 に基づいてパッケージの新しいバージョンをインストールします
于 2014-06-01T13:13:49.793 に答える
177

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

npm-チェック

古い、正しくない、使用されていない依存関係を確認します。

ここに画像の説明を入力

また、依存関係を で更新するための便利なインタラクティブな方法も提供しnpm-check -uます。

于 2014-12-14T07:07:27.893 に答える
122

1 つの簡単なステップ:

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

それだけです。のパッケージ バージョンはすべてpackage.json最新のメジャー バージョンになります。

編集:

ここで何が起きてるの?

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

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

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

于 2017-04-13T18:51:33.437 に答える
74
  • 単一のローカル パッケージを更新するには:

    1. まず、古いパッケージを見つけます。

      npm outdated

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

      npm update --save package_name

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

これにより、パッケージが最新バージョンに更新されることに注意してください。

  • package.jsonファイルにいくつかのバージョンを書き込んで実行する場合:

    npm update package_name

    この場合、ファイルに書き込んだバージョンに関して、次の安定バージョン (必要な) だけを取得しpackage.jsonます。

またnpm list (package_name)、ローカル パッケージの現在のバージョンを確認できます。

于 2015-09-02T21:55:53.777 に答える
24

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

  • 以下のコマンドを使用して、ノード モジュールの古いまたは脆弱性をチェックします。

    npm audit

  • 脆弱性が見つかった場合は、以下のコマンドを使用してすべての問題を修正します。

    npm audit fix

  • うまくいかない場合は、試してみてください

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

  • 強制監査修正を使用したくない場合は、package-lock.jsonおよびpackage.jsonファイルで依存関係のバージョンを変更することにより、依存関係のバージョンを手動で修正できます。次に実行します

npm update && npm upgrade

于 2018-10-23T02:24:15.820 に答える
4

別のアプローチは、最初に package.json ファイルをアップグレードすることです。

ncu -u

上記のコマンドを使用した端末のスナップショット そして、単に実行し、

npm install

すべてのパッケージを最新バージョンに更新します。ps: すべてのパッケージを最新バージョンに更新しますが、パッケージが既に最新の場合、そのパッケージはまったく影響を受けません。

于 2021-04-24T06:01:13.303 に答える
3

すべての古いパッケージを更新するために使用できる 3 つの簡単な手順

まず、古いパッケージを確認します

sudo npm i -g npm-check-updates

第二に、それらすべてを準備してください

ncu -u

ターミナルでの結果は次のようになります。

ここに画像の説明を入力

第三に、それらすべてを更新するだけです。

npm install

それでおしまい。

于 2021-07-13T03:41:42.647 に答える
0

私のpackage.json.

これは、それを処理するワンライナーです

npm update `npm outdated | awk '{print $1}' | tr '\n' ' '`

機能:

  1. npm outdatedとからの出力を取得します
  2. awkパッケージの名前だけを取得している場所 (列 1) にパイプします。
  3. 次にtr、改行文字をスペースに変換するために使用しています
  4. 最後に -- バッククォートを使用して -- 前のステップの出力を引数として使用しているnpm updateため、必要なすべての更新を一度に取得できます。

単独でこれを行う方法があると思う人もいるでしょうがnpm、私が見たときにはここになかったので、誰かの役に立つ場合に備えてここにドロップします.

** MikeMajara がここで同様のことを行う回答があると思いますが@latest、更新されたパッケージ名に追加されますが、定期的にスケジュールされた更新の一部としてはあまり興味がありません。

于 2021-11-14T15:49:05.623 に答える