Webpack中如何配置和使用Eslint和Babel

635 阅读3分钟

Eslint在Webpack中的配置和使用

Eslint是用于检测代码规范的插件,我们使用Eslint,关键是写Eslint的配置文件,里面写上各种rules规则,将来运行Eslint时就会以写的规则对代码进行检查。

配置Eslint

配置文件:

配置文件有多种写法:

  • .eslintrc
    
  • .eslintrs.js
    
  • .eslintrs.json
    

区别在于配置格式不一样

package.jsoneslintConfig:不需要创建文件,在原有基础上写

两种方式选其一即可

具体配置:

.eslintrc.js为例,在项目根目录创建.eslintrc.js文件,用于配置eslint规则:

module.exports = {
   // 解析选项
   parserOptions: {},
   // 具体检查规则
   rules: {},
   //继承eslint规则
   extends:[]
}

parserOptions解析选项

parserOptions: {
    ecmaVersion: 6,  // ES语法版本
    sourceType: "module",  // ES模块化
    ecmaFeatures: {  // ES其他特性
        jsx: false  // 如果是React项目,就需要开启jsx语法
    }
},

rules具体规则

  • "off"0:关闭规则
  • "warn"1:开启规则(警告级别,不会导致程序退出)
  • "error"2:开启规则(错误级别,当被触发时,程序会退出)
// 具体检查规则
rules: {
    "no-var":2,  // 禁止使用var定义变量
    eqeqeq: "warn" // 如果使用 === 或 !== 则会警告
},

更多规则详见规则文档

extends继承

如果不想自定义rules规则,可以直接继承现有规则

  • Eslint官方的规则:eslint:recommended
  • Vue Cli官方的规则:pligin:vue/essential
  • React Cli官方的规则:react-app

在Webpack中使用Eslint

1. 下载eslint: npm install eslint-webpack-plugin eslint --save-dev

2. 引入eslintwebpack.config.js

const ESLintPlugin = require('eslint-webpack-plugin');

3. 在plugins里面配置eslint

// 插件
plugins: [
   // plugins的配置
   new ESLintPlugin({
       //检测哪些文件
       context:path.resolve(__dirname,'src')
   })
],

4. 创建eslint配置文件.eslintrc.js

module.exports = {
    // 解析选项
    parserOptions: {
        ecmaVersion: 6,  // ES语法版本
        sourceType: "module",  // ES模块化
        ecmaFeatures: {  // ES其他特性
            jsx: false  // 如果是React项目,就需要开启jsx语法
        }
    },
    // 具体检查规则
    rules: {
        "no-var":2,  // 禁止使用var定义变量
        eqeqeq: "warn" // 如果使用 === 或 !== 则会警告
    },
    //继承eslint规则
    extends:['eslint:recommended'],
    env:{
        node:true, //启用node中全局变量
        browser: true  //启用浏览器中全局变量
    }
}

.eslintignore

该文件用于说明哪些目录不需要eslint检查

如直接在文件中写dist,那么dist目录下的文件都不会被eslint检查

Babel在Webpack中的配置和使用

Babel的主要功能是将ES6语法编译为ES6以前的旧语法,目的是为了兼容版本较低的浏览器,以便能够运行在当前和旧版本的浏览器或其他环境中。

配置Babel

配置文件:

配置文件有多种写法:

babel.config.jsbabel.config.json

或者.babelrc.js.babelrc.json

具体配置:

babel.config.js为例,在项目根目录创建babel.config.js文件:

module.exports = {
  //预设
  presets: []
}

presets预设

Babel插件,用于扩展Babel的功能。

  • @babel/preset-env: 智能预设,允许使用最新的JavaScript
  • @babel/preset-react: 用来编译React jsx语法的预设
  • @babel/preset-typescript: 用来编译TypeScript的预设

在Webpack中使用Babel

1. 下载babel:npm install babel-loader @babel/core @babel/preset-env -D

2. 配置babel-loader:webpack.config.js文件中的module的rules中配置,详细配置如下:

//配置babel-loader
{
    test: /.js$/,
    exclude: /node_modules/,  //排除node_modules中的js文件(这些文件不处理)
    loader: 'babel-loader',
    // 可以直接在该下方位置配置babel的智能预设,也可以新建一个babel.config.js来单独配置
    // options: {
    //     presets: ['@babel/preset-env']
    // }
}

3. 配置babel智能预设(两种方式)

第一种:上方代码注释处

第二种:新建babel.config.js文件,代码如下:

module.exports = {
    //智能预设,能够编译ES6语法
    presets: ['@babel/preset-env']
}