私たちは、KarmaテストランナーをTeamCityに統合する必要があります。そのために、システムエンジニアに小さなスクリプト(powershellなど)を提供したいと思います。
いくつかの設定ファイルから希望のバージョン番号を選択します(karma.conf.js
の中にコメントとして入れることができると思います)
npmのグローバルレポジトリに定義されたバージョンのカルマランナーがインストールされているか確認する
そうでない場合、またはインストールされているバージョンが必要以上に古い場合:正しいバージョンを選択してインストールします。
実行してください:karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
それで私の本当の質問は、「インストールされているパッケージのバージョンが欲しいのなら、どうやってスクリプトをチェックインすることができるのか」ということです。チェックするべきでしょうか、それとも毎回npm -g install
を呼ぶのが安全なのでしょうか。
他の設定値に互換性がなくなる可能性があるため、常に最新の利用可能なバージョンを確認してインストールする必要はありません
プロジェクト内のいずれかのモジュールが「古い」かどうかを確認するには、次のようにします。
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の資料を見てください。
npm outdated
は更新すべきパッケージを識別し、npm update <package name>
は各パッケージの更新に使用できます。しかし、npm update <package name>
はあなたのpackage.jsonのバージョンを更新しませんが、これは問題です。
最善のワークフローは次のとおりです。
npm update
を実行して各パッケージの最新版をインストールしますこのワークフローを支援するためにnpm-check-updates
を調べてください。
npm-check-updates
を実行してください(基本的にnpm outdated
を実行するのと同じこと)npm-check-updates -u
を実行してpackage.json内のすべてのバージョンを更新します(これがマジックソースです)。npm update
を実行して、更新されたpackage.jsonに基づいて新しいバージョンのパッケージをインストールします。単一のローカルパッケージを更新するには
まず古いパッケージを見つけてください。
npm outdated
次に、手動で必要なパッケージを次のように更新します。
npm update --save package_name
この方法では、ローカルのpackage.json
ファイルを更新する必要はありません。
これはあなたのパッケージを最新バージョンに更新することに注意してください。
あなたのpackage.json
ファイルに何らかのバージョンを書き、次のようにしたら:
npm update package_name
この場合、あなたがあなたのpackage.json
ファイルに書いたバージョンに関する次の安定版(欲しい)だけを手に入れるでしょう。
そしてnpm list (package_name)
を使えば、あなたのローカルパッケージの現在のバージョンを知ることができます。
簡単な一歩:
$ npm i -g npm-check-updates && ncu -u && npm i
それがすべてです。 package.json
内のすべてのパッケージバージョンが最新になります。
編集する
ここで何が起きてるの?
アップデートをチェックするパッケージをインストールします。
このパッケージを使ってあなたの
package.json
内のすべてのパッケージバージョンを更新します(-aは--updateAllの略です)。新しいバージョンのパッケージをすべてインストールします。
期限切れのパッケージを確認する
npm outdated
更新するパッケージをチェックして選択する
npx npm-check -u
以下のコマンドを使用して、ノードモジュールの古いものや脆弱性をチェックしてください。
npm audit
脆弱性が見つかった場合は、以下のコマンドを使用してすべての問題を解決してください。
npm audit fix
うまくいかない場合は、
npm audit fix -f
、このコマンドはほとんどすべての脆弱性を修正します。いくつかの依存関係またはdevDependenciesは package-lock.json ファイルにロックされているので、強制的に更新するために-f
フラグを使用します。
強制監査による修正を使用したくない場合は、 package-lock.json および package.json ファイルで依存関係のバージョンを手動で修正することができます。それから `npm update && npm upgrade 'を実行してください。
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ボックスでその設定をグローバルに保持する必要がなくなります。
追加のパッケージはありません。古くなったものをチェックして更新するだけで、このコマンドは以下を実行します。
npm install $(npm outdated | cut -d' ' -f 1 | xargs -I '$' echo '$@latest' | xargs echo)
1つのパッケージだけを更新するには、NCUをインストールしてから、そのパッケージに対してのみ実行します。これは本当の最新のものにぶつかるでしょう。
npm install -g npm-check-updates
ncu -f your-intended-package-name -u
[email protected] +の時点で、次のことが簡単にできます。
npm update <package name>
これにより、package.json
ファイルが自動的に更新されます。最新バージョンを手動で更新してからnpm update <package name>
を使用する必要はありません
あなたはまだ古い振る舞いを得ることができます
npm update --no-save
( 参照 )