0
点赞
收藏
分享

微信扫一扫

webpack进阶篇(二十九):构建异常和中断处理


说明

玩转webpack学习笔记

如何判断构建是否成功?

在 CI/CD 的 pipline 或者发布系统需要知道当前构建状态

每次构建完成后输⼊ echo $? 获取错误码

构建异常和中断处理

webpack4 之前的版本构建失败不会抛出错误码 (error code)

Node.js 中的 process.exit 规范

  • 0 表示成功完成,回调函数中,err 为 null
  • ⾮ 0 表示执⾏失败,回调函数中,err 不为 null,err.code 就是传给 exit 的数字

如何主动捕获并处理构建错误?

compiler 在每次构建结束后会触发 done 这
个 hook

process.exit 主动处理构建报错

plugins: [
function() {
this.hooks.done.tap('done', (stats) => {
if (stats.compilation.errors &&
stats.compilation.errors.length &&
process.argv.indexOf('--watch') == -1)
{
console.log('build error');
process.exit(1);
}
})
}
]

实列

先把​​my-project\src\index\index.js​​​里的文件里引入一个不存在的模块,然后运行 ​​npm run build​

import { helloWebpck } from './helloWebpack';
import '../../common/index.js';
import '../../common/index/index.js'; // 不存在的模块
document.write(helloWebpck());

webpack进阶篇(二十九):构建异常和中断处理_错误码

然后在配置​​webpack.config.prod.js​

module.exports = {
plugins: [
new FriendlyErrorsWebpackPlugin(),
function() {
this.hooks.done.tap('done', (stats) => {
if (stats.compilation.errors &&
stats.compilation.errors.length &&
process.argv.indexOf('--watch') == -1)
{
console.log('凯小默测试一下:build error');
process.exit(1);
}
})
}
].concat(htmlWebpackPlugins),
stats: 'errors-only'
};

可以看到这里打印的东西已经出来了,状态也变成 1 了。

webpack进阶篇(二十九):构建异常和中断处理_node.js_02


举报

相关推荐

0 条评论