阅读完NoErrorsPlugin
文档后.
当编译此插件时出现错误时会跳过发射阶段(和记录阶段),因此没有发出包含错误的资产.
不过,不明白.如何使用它?
我做了一个syntax error
,但似乎在我启用之前没有什么不同NoErrorsPlugin
.
Car*_*ann 12
由于关于此的webpack文档仍然稀少,让我们看一下源代码,https://github.com/webpack/webpack/tree/master/lib/NoErrorsPlugin.js:
let deprecationReported = false;
class NoErrorsPlugin {
apply(compiler) {
compiler.plugin("should-emit", (compilation) => {
if(!deprecationReported) {
compilation.warnings.push("webpack: Using NoErrorsPlugin is deprecated.\n" +
"Use NoEmitOnErrorsPlugin instead.\n");
deprecationReported = true;
}
if(compilation.errors.length > 0)
return false;
});
compiler.plugin("compilation", (compilation) => {
compilation.plugin("should-record", () => {
if(compilation.errors.length > 0)
return false;
});
});
}
}
module.exports = NoErrorsPlugin;
Run Code Online (Sandbox Code Playgroud)
暂时忽略弃用方面.此代码是一个webpack插件,如下所示:https://webpack.js.org/api/plugins .它使用事件挂钩should-emit
和compilation
,这是记录在这里:https://webpack.js.org/api/plugins/compiler/#event-hooks.我找不到should-record
钩子,但它似乎是关于这个:https://webpack.js.org/api/plugins/compilation/#record-compilation-records-.
所以我们可以总结一下:如果有错误,插件会抑制目标代码的发送,以及"存储有关编译的信息".我通过React应用程序验证了这一点,通过切换webpack配置中的插件并监视输出包的时间戳.
关于弃用:在同一个GitHub目录中,还有一个"NoEmitOnErrorsPlugin.js",它看起来像"NoErrorsPlugin.js",只是没有弃用.因此,如果我们想要抑制代码发射,我们应该使用新的插件.
如前所述,当编译期间出现错误时, NoErrorsPlugin(现已重命名为NoEmitOnErrorsPlugin)不会向构建文件夹发出任何资源。
\n\n@Carsten F\xc3\xbchrmann 的答案非常好,但由于 OP 询问何时使用此插件,我想补充一点,此插件最常见的用例有两个:
\n\n关于第一个用例(生产构建),从 Webpack 4 开始不再需要它,因为在生产模式下运行 Webpack 时默认启用它。(https://github.com/webpack/webpack/releases?after=v4.0.1)
\n\n如果您遵循最新的基本配置(https://webpack.js.org/guides/hot-module-replacement/),您会发现这并不是严格需要的,但对于其他一些 HMR 设置(https://www. npmjs.com/package/webpack-hot-middleware)这个插件非常有用,因为它可以防止在代码未编译的情况下向浏览器发出任何资产(以及任何更新)。
\n 归档时间: |
|
查看次数: |
12048 次 |
最近记录: |