# Eslint

配置文件:

.eslintrc.js

module.exports = {
  // 以当前目录为根目录,不再向上查找 .eslintrc.js
  root: true,
  // 此项是用来指定eslint解析器的,解析器必须符合规则,babel-eslint解析器是对babel解析器的包装使其与ESLint解析
  parser: 'babel-eslint',
  // 此项是用来指定javaScript语言类型和风格,sourceType用来指定js导入的方式,默认是script,此处设置为module,指某块导入方式
  parserOptions: {
    ecmaVersion: 2019,
    // ECMAScript modules 模式
    sourceType: 'module',
    ecmaFeatures: {
      // 不允许 return 语句出现在 global 环境下
      globalReturn: false,
      // 开启全局 script 模式
      impliedStrict: true,
      jsx: true
    },
    // 即使没有 babelrc 配置文件,也使用 babel-eslint 来解析
    requireConfigFile: false,
    // 仅允许 import export 语句出现在模块的顶层
    allowImportExportEverywhere: false
  },
  // 此项指定环境的全局变量,下面的配置指定为浏览器环境和node环境
  env: {
    browser: true,
    node: true,
    commonjs: true,
    es6: true,
    jest: true,
    mocha: true,
    mongo: true,
  },
  // 脚本在执行期间访问的额外的全局变量
  globals: {
    "$": true,
    app: true,
  },
   // 此项是用来提供插件的,插件名称可以省略前缀eslint-plugin-,下面这个配置是用来规范html的
  plugins: [
    'html',
    'import', // eslint-plugin-import
    'vue-',
    "flow-vars", 
    "react"
  ],
  /**
   * 继承已有规则
   * extends 属性值可以是:
   * 1. 指定配置的字符串(配置文件的路径、可共享配置的名称、eslint:recommended 或 eslint:all); 
   * 2. 字符串数组:每个配置继承它前面的配置
   */
  extends: [
    './base.js', // 从文件继承
    './import.js',
    'standard', // 流行的风格指南
    'eslint:recommended', // 推荐规则
    'eslint:all', // 所有核心规则
    /**
     * extends如果是plugin的写法 
     * 1. plugin:
     * 2. 包名 (省略了前缀,比如,react)
     * 3. /
     * 4. 配置名称 (比如 recommended)
     */
    'plugin:react/recommended', 
    'plugin:vue/recommended',
  ],
  rules:{
   /**
    * 不要在中括号中添加空格 
    */
  'array-bracket-spacing': [
    "error",
    "never"
  ],
}

忽略规则文件:.eslintignore

# Valid
/root/src/*.js

# Invalid
\root\src\*.js

除了 .eslintignore 文件中的模式,ESLint总是忽略 /node_modules/*/bower_components/* 中的文件。

参考:https://eslint.bootcss.com/