如何将编译标记为失败并使 webpack 从插件中以非零 return 值退出?

How to mark a compilation as failed and make webpack to exit with non-zero return value from a plugin?

我想创建一个 webpack 插件来检查代码库,并可选择将编译标记为失败并导致 webpack(如果不是 运行 在监视模式下)以非零值退出 return代码。

我注意到插件可以像这样报告错误:

compilation.errors.push(new Error('foo error'))

然而,此类错误不会导致非零 return 代码。加载程序(基于对 babel-loader 的检查)似乎可以通过抛出异常来实现。

如何使 webpack 以其插件中的非零 return 代码退出? 假设设置了 bail 标志,但没有设置想求助于黑客:

if (bail) {
    process.on('exit', () => process.exitCode = 1)
}

插件可以通过将 true-ish 对象传递给 run 钩子的回调来报告失败:

compiler.plugin('run', (compiler, callback) => {
    callback(new Error('problem description'))
})

上面的代码导致 webpack 以 return 代码 1.

退出

这适用于 documentation 中标记为 async 的所有方法:

async: Last parameter is a callback. Signature: function(err, result)