美文网首页让前端飞
认识Eslint以及项目常见的.eslintrc.js配置

认识Eslint以及项目常见的.eslintrc.js配置

作者: Danile_1226 | 来源:发表于2019-04-29 17:04 被阅读0次

    什么是eslintrc

    ESLint旨在完全可配置,这意味着你可以关闭每个规则并仅使用基本语法验证运行,或混合并匹配捆绑规则和自定义规则,以使ESLint完美适合您的项目。配置ESLint有两种主要方法:

    配置注释 - 使用JavaScript注释将配置信息直接嵌入到文件中。
    配置文件 - 使用JavaScript,JSON或YAML文件指定整个目录(主目录除外)及其所有子目录的配置信息。


    配置文件格式

    ESLint支持多种格式的配置文件:
    JavaScript - 使用.eslintrc.js和导出包含您的配置的对象。
    YAML - 使用.eslintrc.yaml或.eslintrc.yml定义配置结构。
    JSON - 用于.eslintrc.json定义配置结构。ESLint的JSON文件也允许JavaScript样式的注释。
    不推荐使用 - 使用.eslintrc,可以是JSON或YAML。
    package.json - eslintConfig在您的package.json文件中创建一个属性并在那里定义您的配置。

    如果同一目录中有多个配置文件,则ESLint将只使用一个。优先顺序是:
    1.eslintrc.js
    2.eslintrc.yaml
    3.eslintrc.yml
    4.eslintrc.json
    5.eslintrc
    6.package.json


    配置级联和层次结构

    假设您具有以下结构:

    your-project
    ├── .eslintrc
    ├── lib
    │ └── source.js
    └─┬ tests
      ├── .eslintrc
      └── test.js
    

    配置级联的工作方式是使用最接近.eslintrc文件的文件作为最高优先级,然后使用父目录中的任何配置文件,依此类推。
    1⃣️lib/所有文件,将使用.eslintrc项目根目录中的文件作为其配置
    2⃣️tests/目录,.eslintrc其目录层次结构中的两个文件的组合来绘制,其中最接近的文件具有优先权。
    通过这种方式,您可以拥有项目级ESLint设置,并且还具有特定于目录的覆盖。

    假设您具有以下结构:

    your-project
    ├── package.json
    ├── lib
    │ └── source.js
    └─┬ tests
      ├── .eslintrc
      └── test.js
    

    如果在同一目录中找到了一个.eslintrc和一个package.json文件,.eslintrc将优先使用,并且package.json不会使用该文件。

    假设您具有以下结构:

    home
    └── user
        ├── .eslintrc <- Always skipped if other configs present
        └── projectA
            ├── .eslintrc  <- Not used
            └── lib
                ├── .eslintrc  <- { "root": true }
                └── main.js
    

    默认情况下,ESLint将在根目录下的所有父文件夹中查找配置文件。
    要将ESLint限制为特定项目,请将其"root": true放在文件eslintConfig字段内package.json或.eslintrc.*项目根级别的文件中。一旦找到配置,ESLint将停止查找父文件夹"root": true。


    项目中常用的配置

    下面这些rules是用来设置从插件来的规范代码的规则,使用必须去掉前缀eslint-plugin-主要有如下的设置规则,可以设置字符串也可以设置数字,两者效果一致
    "off" -> 0 关闭规则
    "warn" -> 1 开启警告规则
    "error" -> 2 开启错误规则

    // http://eslint.org/docs/user-guide/configuring
    
    module.exports = {
      //此项是用来告诉eslint找当前配置文件不能往父级查找
      root: true,
    
     //此项是用来指定eslint解析器的,解析器必须符合规则,babel-eslint解析器是对babel解析器的包装使其与ESLint解析
      parser: 'babel-eslint',
    
     //此项是用来指定javaScript语言类型和风格,sourceType用来指定js导入的方式,默认是script,此处设置为module,指某块导入方式
      parserOptions: {
    
    // 设置 script(默认) 或 module,如果代码是在ECMASCRIPT中的模块
        sourceType: 'module',
        "ecmaVersion": 6,
      },
    
    // 此项指定环境的全局变量,下面的配置指定为浏览器环境
      env: {
        browser: true,
      },
    
    // 此项是用来配置标准的js风格,就是说写代码的时候要规范的写,如果你使用vs-code我觉得应该可以避免出错
      extends: 'airbnb-base',
    
    // 此项是用来提供插件的,插件名称省略了eslint-plugin-,下面这个配置是用来规范html的
      // required to lint *.vue files
      plugins: [
        'html'
      ],
    
      // check if imports actually resolve
      'settings': {
        'import/resolver': {
          'webpack': {
            'config': 'build/webpack.base.conf.js'
          }
        }
      },
    
      // add your custom rules here
      'rules': {
        // don't require .vue extension when importing
        'import/extensions': ['error', 'always', {  // 对文件扩展名的验证
          'js': 'never',
          'vue': 'never'
        }],
        // allow optionalDependencies
        'import/no-extraneous-dependencies': ['error', {
          'optionalDependencies': ['test/unit/index.js']
        }],
        'no-unused-expressions': ["error", {   // 禁止无用的表达式
          "allowTernary": true,
          "allowShortCircuit": true
        }],
        'no-bitwise': ["error", {   //不允许使用位运算符
          "allow": ["~"]
        }],
        'import/prefer-default-export': 0,// 关闭-使用default export
        'import/newline-after-import': 0, // 关闭-在import中新起一行
        'no-param-reassign': 0,  //关闭-不允许重新分配函数参数"no-proto
        'no-plusplus': 0,  //关闭-不允许使用++ --运算符
        'linebreak-style': 0,
        'max-len': 0,  //关闭-一行最大长度,单位为字符
        'no-nested-ternary': 0,  //关闭-不允许使用嵌套的三目运算符
        'camelcase': 0,  // 不强制驼峰命名规则
        // allow debugger & console during development
        'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
        'no-console': process.env.NODE_ENV === 'production' ? 2 : 0
      }
    }
    

    相关文章

      网友评论

        本文标题:认识Eslint以及项目常见的.eslintrc.js配置

        本文链接:https://www.haomeiwen.com/subject/gldtnqtx.html