作者:玉乔嘉芸孟峰 | 来源:互联网 | 2023-09-14 15:55
说明玩转webpack学习笔记如何判断构建是否成功?在CICD的pipline或者发布系统需要知道当前构建状态每次构建完成后输⼊echo$?获取错误码构建异常和中断处理
说明
玩转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 了。