说明
玩转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.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 了。