# 优化命令行和构建捕获

# 统计信息 stats

Preset Alternative Description
errors-only none 只在发生错误时输出
minimal none 只在发生错误或有新的编译时输出
none false 没有输出
normal true 标准输出
verbose none 全部输出
// webpack.config.js
module.exports = {
    ...
    devServer: {
        stats: 'errors-only'
    }
}
1
2
3
4
5
6
7

# 如何优化

  • friendly-errors-webpack-plugin
    • success 构建成功
    • warning 构建警告
    • error 构建报错
  • stats 设置成 errors-only
// webpack.config.js
module.exports = {
   plugins: [
       ...
       new FriendlyErrorsWebpackPlugin()
   ],
   devServer: {
       stats: 'errors-only'
   }
}
1
2
3
4
5
6
7
8
9
10

# 构建异常和中断处理

webpack4 之前版本构建失败不会抛出错误码

Node.js 中的 process.exit 规范

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

# 如何主动捕获

  • compiler 在每次构建结束后触发 done 这个 hook
  • process.exit 主动处理构建报错
// webpack.config.js
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);
                }
            })
        }
]
1
2
3
4
5
6
7
8
9
10
11
12
更新于: 2/12/2020, 8:50:45 AM