6

この記事を読んだ後、npm をタスク ランナー/ビルド ツールとして使用しようとしています。

npm をビルドツールとして使用する方法

私はある程度の成功を収めていますが、1 つのことに行き詰まっています。JSLINT、JSHINT、ESLINT などのコマンドライン グローバル ツールを実行すると、npm は常にコンソール ウィンドウに Exit 1 コードを表示します。

ここに画像の説明を入力

ご覧のとおり、コマンドは正常に動作しますが、npm はそれをエラーと見なし、エラー ログ情報を表示します。これは正常ですか、または特定のコマンドに対してオフにする方法はありますか?

追加情報: これは、私の package.json 構成のスクリプト ブロックです。

"scripts": { "start": "node ./src/server/index.js", "test": "", "lint": "eslint index.js" }

次に、npm cli から次のように入力します。

npm run lint

これにより、「lint」というラベルが付いた package.json ファイルにあるスクリプトが実行されます。

4

4 に答える 4

3

私はこれを使用します:

"scripts": {
   "start": "node ./src/server/index.js",
   "lint": "eslint index.js || exit 0"
}

よろしく!

于 2016-09-12T10:37:43.800 に答える
2

NPM スクリプトは意図的にこのように動作するように設計されているため、終了コード 1 または 2 ( 以外のもの0) は、オペレーティング システムで動作するのと同じようにポスト タスクの実行を妨げます。

--silentフラグを使用することオプションですが、スクリプトに他の問題がある場合に問題になる可能性があり、リント/テスト エラーなしでビルドが失敗し始めると、頭を壁にぶつけてしまうことになります。

ここで行う最善の方法は、プロセスを構成して、望ましくない状況でエラー終了コードを出力しないようにすることです。この場合... eslint の設定に基づいて、いくつかのエラーが正当にポップアップ表示されます。これにより、エラー終了コードが発生し、(当然のことながら) 次のタスクの実行が妨げられます。これは、npm スクリプトを使用しているときに実際に非常に便利です。エラーがあることがわかっているときに、テスト/ビルド ステップが不必要に実行されるのを防ぐことができるからです。

したがって、この場合、.eslintrcプロジェクトにファイルを追加し、linting エラーと npm エラーの両方を処理するいくつかのルールを指定します。

以下に簡単なサンプル.eslintrcファイルを掲載しました。コマンドラインで実行すると、ファイルまたはファイルeslintが自動的に検出され、それらの構成が順守されます。.eslintrc.eslintignore

以下のサンプルはリンティング エラーをクリーンアップしますが、eslint がその「トリガー」を取得したときにスローされる終了コードを変更することに注意してください。ルールを に変更すると0、そのパターンを認識してもアラートが表示されなくなります。

ルールコードの利用と設定についてもっと読むことができます.または... npmをビルドツールとして使用し、eslintの使用を含む私が作成したシードプロジェクトをチェックしてください: react-flux-npm-automation

// /path/to/project/.eslintrc
{
    "parser": "babel-eslint",
    "env":{
        "browser":true,
        "node":true,
        "es6":true
    },
    "rules": {
        "strict":0,
        "quotes":0,
        "no-unused-vars":0
    }
}
于 2015-05-10T16:10:58.533 に答える
2

検証エラーがあるため、eslint は終了コード 1 で存在します。これにより、npm は実行中にエラーが発生したと認識します。

Linux を使用している場合は、このトリックを使用して常に終了コード 0 を返すことができます。

"scripts": { "start": "node ./src/server/index.js", "test": "", "lint": "eslint index.js; true" }
于 2015-01-27T00:05:02.560 に答える
1

この問題の回避策を見つけました。scripts ブロックでは、テスト スクリプトを使用して、 --silent フラグを指定して lint の npm コマンドを呼び出します。

"scripts": {
"start": "node ./src/server/index.js",
"test": "npm run-script --silent lint",
"lint": "eslint index.js"}

次に、コマンドラインで次のように入力できます。

npm run test

エラーログを表示せずに動作するようになりました。

于 2015-01-27T00:14:51.340 に答える