Webpack 何时使用“NoErrorsPlugin”的网页包?

Webpack 何时使用“NoErrorsPlugin”的网页包?,webpack,Webpack,阅读NoErrorsPlugin文档后 编译时出现错误时,此插件将跳过发射阶段(和录制阶段),因此不会发射包含错误的资产 我还是不明白。如何使用它 我犯了一个语法错误,但在启用NoErrorsPlugin之前似乎没有什么不同,我认为NoErrorsPlugin用于网页包构建过程失败 我有一个场景可以使用这个插件。如果项目使用eslint/eslint加载程序,则生成将失败eslint警告。但是束将被发射 NoErrorsPlugin阻止Webpack将任何内容输出到包中。因此,即使ESLint警

阅读
NoErrorsPlugin
文档后

编译时出现错误时,此插件将跳过发射阶段(和录制阶段),因此不会发射包含错误的资产

我还是不明白。如何使用它


我犯了一个
语法错误
,但在启用
NoErrorsPlugin
之前似乎没有什么不同,我认为
NoErrorsPlugin
用于网页包构建过程失败

我有一个场景可以使用这个插件。如果项目使用
eslint/eslint加载程序
,则生成将失败eslint警告。但是束将被发射

NoErrorsPlugin阻止Webpack将任何内容输出到包中。因此,即使ESLint警告也会使构建失败。无论
eslint加载程序使用何种错误设置

参考:


因此,我们可以在production env中使用NoErrorsPlugin来保持无错误构建。

我正在阅读答案,但仍然没有得到答案。这是我发现的

NoErrorsPlugin()是一个可选插件,它告诉重新加载程序 如果出现错误,则不重新加载。错误只是简单地打印在 控制台,页面不会重新加载。如果你没有这个插件 如果启用,并且您有一个错误,将抛出一个红色死亡屏幕


复制自

由于有关这方面的网页文档仍然很少,让我们看看源代码:

let deprecationReported=false;
类NoErrorsPlugin{
应用(编译器){
plugin(“应该发出”,(编译)=>{
如果(!弃用报告){
compilation.warnings.push(“不推荐使用NoErrorsPlugin的网页包。\n”+
“请改用NoEmitOnErrorsPlugin。\n”);
deprecationReported=true;
}
如果(compilation.errors.length>0)
返回false;
});
plugin(“编译”,(编译)=>{
plugin(“应该记录”,()=>{
如果(compilation.errors.length>0)
返回false;
});
});
}
}
module.exports=NoErrorsPlugin如上所述,当编译过程中出现错误时,NoErrorsPlugin(现在重命名为NoEmitOnErrorsPlugin)不会向生成文件夹发送任何资源

@Carsten Führmann的回答非常好,但由于OP询问何时使用此插件,我想补充一点,此插件最常见的用例有两种:

  • 在生产模式下编译时,避免释放应用程序的资产
  • 关于第一个用例(生产的构建),在生产模式下运行Webpack时,默认启用Webpack 4,因此不再需要它。()

  • 使用热模块更换功能

  • 如果您遵循最新的基本配置(),您会发现这不是严格需要的,但对于其他一些HMR设置(),此插件非常有用,因为它可以防止在代码未编译的情况下向浏览器发送任何资源(以及任何更新)。

    在必须回答为什么时回答。这很好地总结了原因。请注意,
    NoErrorsPlugin
    (v1)、
    NoEmitOnErrorsPlugin
    (v2、v3)和
    优化。noEmitOnErrors
    (v4)都是相同功能的表现形式。这篇文章讨论了v4,但为什么保持不变

    为什么不使用
    NoErrorsPlugin
    :如果应用程序的任何部分出现错误,则无法使用其工作部分。在开发过程中,如果你只需要快速测试a部分的新代码,那么修复混乱的B部分可能会很烦人。想象一下,你造了一辆车,你想试试行李箱打开得有多顺利,但你不能,因为猫罩装饰没有到位


    为什么要使用
    NoErrorsPlugin
    :没有损坏的捆绑包。在生产中,您可能希望应用程序的所有部分都处于工作状态,因为这涉及到实际风险。应用程序中任何地方的错误都可能危及其他部分的功能和安全。因此,我们不想发布其他可能起作用的部分。我们希望继续作为一个整体为旧但稳定的版本提供服务。如果构建中发生错误,我们不希望它以任何方式影响稳定版本。这就是为什么要使用
    NoErrorsPlugin

    虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-谢谢你的建议!我已经添加了答案的基本部分。另外一个链接显示了在哪里为webpack 4启用
    noEmitOnErrors
    +