friendly-errors-webpack-plugin v 1.7.0
本插件可以识别webpack中的某些类别的错误,并对它们进行清理、聚合和排序,以提供更好的开发体验。
开始
安装
npm install friendly-errors-webpack-plugin --save-dev
1
基本使用
将FriendlyErrorsWebpackPlugin
加入您的 Webpack 插件配置即可。
var FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');
var webpackConfig = {
// ...
plugins: [
new FriendlyErrorsWebpackPlugin(),
],
// ...
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
关闭错误
您可以将 webpack 配置项中的quite
设置为true
来关闭错误日志。
app.use(require('webpack-dev-middleware')(compiler, {
// ...
logLevel: 'silent',
// ...
}));
1
2
3
4
5
2
3
4
5
如果正在使用webpack-dev-server
,这里也有一些devServer
的配置项:
// webpack config root
{
// ...
devServer: {
// ...
quiet: true,
// ...
},
// ...
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
如果您使用了webpack-hot-middleware
,可以将配置项log
设置为false
。根据您的配置,可以这样做:
app.use(require('webpack-hot-middleware')(compiler, {
log: false
}));
1
2
3
2
3
Demo
Build success
eslint-loader errors
babel-loader syntax errors
Module not found
配置项
插件接收如下配置项:
new FriendlyErrorsPlugin({
compilationSuccessInfo: {
messages: ['您的应用运行在 http://localhost:3000'],
notes: ['编译成功后会显示信息嗷┗|`O′|┛ ']
},
onErrors: function (severity, errors) {
// 您可以监听由插件转换和排序产生的错误
// 错误级别可以设置为`错误`或`警告`
},
// 每次编译时都清空控制台么?
// 默认:true
clearConsole: true,
// 添加格式化方法和转换方法(如下)
additionalFormatters: [],
additionalTransformers: []
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
添加桌面通知
该插件不支持桌面通知,但实现这个功能很简单,基于node-notifier即可。
var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
var notifier = require('node-notifier');
var ICON = path.join(__dirname, 'icon.png');
new FriendlyErrorsPlugin({
onErrors: (severity, errors) => {
if (severity !== 'error') {
return;
}
const error = errors[0];
notifier.notify({
title: "Webpack error",
message: severity + ': ' + error.name,
subtitle: error.file || '',
icon: ICON
});
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
API
格式化方法和转换方法
Webpack 的错误流程分四个步骤:
- 从webpack错误中提取相关信息。这是由这里的插件完成的。
- 对所有的错误应用转换方法,从而识别和注释已知的错误,并给予它们优先级。
- 如果没有抛出错误,那么只获取最高优先级的错误或最高优先级的警告。
- 对所有带注释的错误应用格式化方法。
您可以自行添加转换方法和格式化方法。请查看源代码中的transformErrors和formatErrors,同时也看看默认的transformers和formatters。