1、js语法检查eslint
eslint是撰写JS的一个规范,它会检查你的js代码有没有格式错误或者语法错误,使你的js代码更加规范化
eslint的使用需要eslint-loader
和一个eslint的库
推荐使用爱彼迎的代码检查风格
下载一些必要的东西
npm i eslint-loader eslint eslint-config-airbnb-base eslint-plugin-import -D
下载完之后,我们需要在package.json中新增一个"eslintConfig"
对象,配置如下
eslint的整体配置
'use strict';
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { resolve } = require('path');
//设置nodejs环境变量
process.env.NODE_ENV = "developement"
module.exports = {
entry: './src/js/index.js',
output: {
filename: 'js/bundle.js',
path: resolve(__dirname, 'dist'),
},
module: {
rules: [
//语法检查:eslint-loader eslint
//注意:只检查自己写的源代码,第三方的库是不检查的
//设置检查规则:package.json中eslintConfig中设置
//我们推荐使用爱彼迎的代码检查风格
//airbnb-->下载eslint-config-airbnb-base、eslint、eslint-plugin-import
{
//检查自己写的js文件
test:/.\js$/,
//排除对node_modules的检查
exclude:/node_modules/,
loader:'eslint-loader',
options:{}
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
}),
],
mode: 'development'
}
然后运行 npm run build
,之后就会报一系列的红
如果想要自动修复,我们可以在loader的options
中设置fix:true
options:{
//自动修复eslint的错误
fix:true
}
整体的eslint配置
'use strict';
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { resolve } = require('path');
//设置nodejs环境变量
process.env.NODE_ENV = "developement"
module.exports = {
entry: './src/js/index.js',
output: {
filename: 'js/bundle.js',
path: resolve(__dirname, 'dist'),
},
module: {
rules: [
//语法检查:eslint-loader eslint
//注意:只检查自己写的源代码,第三方的库是不检查的
//设置检查规则:package.json中eslintConfig中设置
//我们推荐使用爱彼迎的代码检查风格
//airbnb-->下载eslint-config-airbnb-base、eslint、eslint-plugin-import
{
//检查自己写的js文件
test:/.\js$/,
//排除对node_modules的检查
exclude:/node_modules/,
loader:'eslint-loader',
options:{
//自动修复eslint的错误
fix:true
}
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
}),
],
mode: 'development'
}
然后再次打包,错误就少了很多啦
但是这里仍然报了一个警告,说我们不能用console.log()
,我们开发调试用没关系,但是代码要上线了,这就非常不好。如果我们想要调试,但是又想忽略这条规则,就可以就加一行代码
//eslint-disable-next-line
下一行eslint所有的规则都失效(下一行不进行eslint的检查)
在入口文件里标明
再次打包,就没有警告啦
说实话,看的我有点懵了
尚硅谷webpack5第16集一直报错,可能是版本问题
当一个文件要被多个loader处理,那么一定要指定loader执行的先后顺序,先执行eslint,再执行babel