npmスクリプトを実行するときに出力を抑制する方法


97

ビルドツールとしてnpmスクリプトを試すことにしましたが、今のところ気に入っています。私が解決したい問題の1つは、何かがリンティングを通過しないときにjshintを実行するスクリプトを実行すると、大量の「npmERR!」が発生することです。行。リンターからの出力の方が意味があるので、これらを抑制したいと思います。

これをグローバルに設定する良い方法はありますか?また、スクリプトの実行ごとに設定する方法はありますか?

node.js  npm 


このトピックに関する問題があります:github.com/npm/npm/issues/6124
daotoad

回答:


166

すべてのスクリプト:

silentいくつかの方法でログレベルをに設定することにより、npmの出力を全体的に抑制することでこれを修正できます。

npm run呼び出しごとに:

npm run --silent <your-script>

または、次の.npmrcファイル(このファイルはプロジェクトディレクトリまたはホームフォルダのいずれかにあります)をグローバルに作成します。

loglevel=silent

リソース:

npmログレベルの設定:https//docs.npmjs.com/misc/config#loglevel

npmrc:https://docs.npmjs.com/misc/config#loglevel

各スクリプト、個別に:

リンティングなどの特定のスクリプトでこの問題を回避するために使用した簡単なトリックは|| true、そのようなスクリプトの最後に追加することです。これは、npm構成を変更しなくても機能します。

これにより、スクリプトは常に0ステータスで終了します。これにより、npmはスクリプトが成功したと思い込ませ、ERRメッセージを非表示にします。より明確にしたい場合は、|| exit 0代わりに追加することができ、同じ結果が得られるはずです。

{
  "scripts": {
    "lint": "jshint || true",
   }
}

|| npm実行の最後に引数を追加しようとしている場合はtrueは機能しません-例:NPMの実行のMycmd - --deploy
arcseldon

4
これは本当にばかげています(あなたを責めないでください)。追加したくない|| true; それは良い解決策ではありません。を使用して他のすべてのコマンドをサイレントにしたくありません.npmrc。そして、この特定のスクリプトを-s常に実行することも非常にばかげているようです。誰かが単一のスクリプトをサイレンシングするためのより良い解決策を見つけましたか?
pascalVKooten 2016

他の誰かがこれに遭遇した場合、未解決の問題があります-github.com/npm/npm/issues/8821を参照してください。
Ian Routledge 2016年

loglevel = silentは私にはやり過ぎのようです。これにより、エラーメッセージも無音になります(ただし、ローカルファイルに書き込まれます)。この提案の直後のリンクによると、可能なログレベルは、優先順位で、「サイレント」、「エラー」、「警告」、「通知」、「http」、「タイミング」、「情報」、「詳細」です。 "、"ばかげた "。「エラー」(警告は抑制されますが、エラーが表示されます)または「警告」(警告が含まれます)のいずれかをお勧めします。通常、npmが何を実行するかを決定する方法を示す理由はありません。これは、デフォルトで実行されることです。それはテキストをデバッグするように感じます。
John Deighan 2018

OK、私は自分自身を正し、異議を唱える必要があります。多分それはnode.jsのバグでさえありますか?'loglevel = error'を使用して.npmrcファイルを作成したとき、 'npm test'を実行すると、実行するコマンドラインを決定する方法に関するnpmのロジックが引き続きトレースされます。ノードバージョン8.12.0、npmバージョン5.8.0。
John Deighan 2018

45

次のように、--quiet--silentオプションの両方を使用できるはずです。

npm install --quiet

--quietstderrと警告が表示され、--silentほぼすべてを抑制します

次の/dev/nullように、stdout / stderrをに送信することもできます。

npm install > "/dev/null" 2>&1

以下のversbose

npm install &> /dev/null

7
Windowsでは、npm install --quiet> NUL
Manohar Reddy Poreddy 2017

4
この質問は、特にnpmスクリプトの実行に関するものです。
ハッケル

--quietnpmスクリプトで動作します;)@ hackel
IG Pascual

7
npm install --quiet --no-progress 

警告とエラーを保持し、それをサポートする端末のADHDプログレスバーを抑制します。


3
この質問は、特にnpmスクリプトの実行に関するものです。
ハッケル

0

イベントリスナーを削除することで、スクリプト内でこれを行うことができます

#!/usr/bin/env node

process.removeAllListeners('warning');

// Do your thang without triggering warnings

-1

--silent毎回追加せずにサイレントにしておきたい個々のスクリプトについては、前のスクリプトを呼び出してを追加する新しいスクリプトを作成できます--silent

package.jsonのスクリプト例:

    "dev-loud": "npm run build && nodemon -r dotenv/config dist/index.js",
    "dev": "npm run dev-loud --silent"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.