2016-10-17 10 views
6

NoErrorsPluginドキュメントを読んだ後。Webpackで `NoErrorsPlugin`を使用するのはいつですか?

このプラグインのコンパイル中にエラーが発生すると、発光フェーズ(および記録フェーズ)がスキップされるため、エラーを含むエミッションが発生しません。

まだ分かりません。それの使い方?

私はsyntax errorを作ったが、NoErrorsPluginを有効にする前に何も変わっていないようだ。

答えて

1

私はNoErrorsPluginがwebpackビルドプロセスで失敗したと考えています。

このプラグインを使用するシナリオは1つあります。プロジェクトがeslint/eslint-loaderを使用している場合、ESLintの警告はビルドに失敗します。しかしバンドルは放出されます。

NoErrorsPluginはWebpackがバンドルに何も出力できないようにします。したがって、ESLintの警告でさえビルドに失敗します。 eslint-loaderにどのようなエラー設定が使用されても問題ありません。

参考: https://github.com/MoOx/eslint-loader#gotchas

だから我々は何のエラービルドを維持しないために、生産ENVでNoErrorsPluginを使用することができます。

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 14339101) – Dmitry

+0

あなたの提案をありがとう!私は答えの不可欠な部分を追加しました。 –

7

私は答えを読んでいましたが、まだそれを取得していません。ここに私が見つけたものがあります。

webpack.NoErrorsPlugin()はエラーがある場合に再ロードしないようにリロード機能 を伝える任意のプラグインです。エラーは単に コンソールに表示され、ページはリロードされません。このプラグイン が有効になっておらず、エラーがある場合は、死亡の赤い画面がスローされます。

このに関するWebPACKのドキュメントはまばらなままなので、のは、ソースコードを見てみましょうhere

5

からコピー、https://github.com/webpack/webpack/tree/master/lib/NoErrorsPlugin.js

let deprecationReported = false; 
 

 
class NoErrorsPlugin { 
 
\t apply(compiler) { 
 
\t \t compiler.plugin("should-emit", (compilation) => { 
 
\t \t \t if(!deprecationReported) { 
 
\t \t \t \t compilation.warnings.push("webpack: Using NoErrorsPlugin is deprecated.\n" + 
 
\t \t \t \t \t "Use NoEmitOnErrorsPlugin instead.\n"); 
 
\t \t \t \t deprecationReported = true; 
 
\t \t \t } 
 
\t \t \t if(compilation.errors.length > 0) 
 
\t \t \t \t return false; 
 
\t \t }); 
 
\t \t compiler.plugin("compilation", (compilation) => { 
 
\t \t \t compilation.plugin("should-record",() => { 
 
\t \t \t \t if(compilation.errors.length > 0) 
 
\t \t \t \t \t return false; 
 
\t \t \t }); 
 
\t \t }); 
 
\t } 
 
} 
 

 
module.exports = NoErrorsPlugin;

は今のところ非推奨の側面を無視します。このコードは、https://webpack.js.org/api/pluginsに記載されているwebpackプラグインです。これは、イベントフックshould-emitcompilationを使用しています。これについては、https://webpack.js.org/api/plugins/compiler/#event-hooksで説明しています。私はshould-recordフックを見つけることができませんでしたが、これは約https://webpack.js.org/api/plugins/compilation/#record-compilation-records-のようです。

エラーがある場合、プラグインはターゲットコードの放出と「コンパイルに関する情報の保存」を抑制します。これをReactアプリケーションで確認しました。ウェブパック設定でプラグインを切り替えて、出力バンドルのタイムスタンプを監視しています。

廃止予定について:同じGitHubディレクトリには、「NoErrorPlugin.js」のように見える「NoEmitOnErrorsPlugin.js」もありますが、廃止予定はありません。したがって、コードの排出を抑制したい場合は、新しいプラグインを使用する必要があります。

関連する問題