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
+