percy507
8/6/2017 - 11:51 AM

My eslint config

My eslint config

const OFF = 0;
const WARN = 1;
const ERROR = 2;

module.exports = {

    // 声明当前开发的环境
    env: {
        es6: true, // 开启 ES6 的所有功能,除过 ES6 的模块部分
        browser: true, // 允许使用浏览器的全局变量
        node: true // 允许使用 node 的全局变量
    },

    // 设置 ESLint 解析器的一些选项
    parserOptions: {
        ecmaVersion: 8, // 设置你想使用的 JavaScript 语法的版本
        sourceType: 'module' // 支持 ES6 的模块部分
    },

    // 使用 eslint-plugin-html 插件来支持 .vue 文件
    // https://github.com/BenoitZugmeyer/eslint-plugin-html
    plugins: [
        'html'
    ],

    // 下列语句可启用官网所有的推荐规则
    extends: 'eslint:recommended',

    // 自定规则
    rules: {
        'no-console': OFF, // 允许使用 console 函数
        'no-extra-parens': ERROR, // 禁止不必要的括号
        'consistent-return': ERROR, // 要求 return 语句要么总是指定返回的值,要么不指定
        curly: ERROR, // 要求遵循大括号约定
        'default-case': ERROR, // 要求 switch 语句中有 default 分支
        'eqeqeq': ERROR, // 要求使用 === 和 !==
        'no-caller': ERROR, // 禁用 arguments.caller 或 arguments.callee
        'no-else-return': ERROR, // 禁止 if 语句中 return 语句之后有 else 块
        'no-empty-function': ERROR, // 禁止出现空函数
        'no-eq-null': ERROR, // 禁止在没有类型检查操作符的情况下与 null 进行比较
        'no-eval': ERROR, // 禁用 eval()
        'no-extra-bind': ERROR, // 禁止不必要的 .bind() 调用
        'no-extra-label': ERROR, // 禁用不必要的标签
        'no-floating-decimal': ERROR, // 禁止数字字面量中使用前导和末尾小数点
        'no-labels': ERROR, // 禁用标签语句
        'no-lone-blocks': ERROR, // 禁用不必要的嵌套块

        // 禁止使用魔术数字
        // 魔术数字是在代码中多次出现的没有明确含义的数字。它最好由命名常量取代, 从而使代码更加可读并且易于重构。
        // 如果团队写代码比较随意,慎用该选项
        // 'no-magic-numbers': ERROR,

        'no-multi-spaces': ERROR, // 禁止使用多个空格
        'no-new-func': ERROR, // 禁止对 Function 对象使用 new 操作符
        'no-new-wrappers': ERROR, // 禁止对 String,Number 和 Boolean 使用 new 操作符
        'no-octal-escape': ERROR, // 禁止在字符串中使用八进制转义序列
        'no-param-reassign': ERROR, // 禁止对 function 的参数进行重新赋值
        'no-proto': ERROR, // 禁用 __proto__ 属性
        'no-return-assign': ERROR, // 禁止在 return 语句中使用赋值语句
        'no-return-await': ERROR, // 禁止在 return 语句中使用 await
        'no-self-compare': ERROR, // 禁止自身比较
        'no-sequences': ERROR, // 禁用逗号操作符
        'no-throw-literal': ERROR, // 禁止抛出异常字面量
        'no-unmodified-loop-condition': ERROR, // 禁用一成不变的循环条件
        'no-unused-expressions': ERROR, // 禁止出现未使用过的表达式
        'no-with': ERROR, // 禁用 with 语句

        // require using Error objects as Promise rejection reasons
        // 使用 Error 对象作为 Promise 的 reject 的参数
        'prefer-promise-reject-errors': WARN,

        'radix': ERROR, // 强制在parseInt()使用基数参数

        // disallow async functions which have no await expression
        // 如果一个异步函数内没出现过 await 语句,那么报错
        'require-await': ERROR,

        'wrap-iife': ERROR, // 要求 IIFE 使用括号括起来
        'no-undefined': ERROR, // 禁止将 undefined 作为标识符

        // 代码风格
        // 默认使用 4 个空格缩进

        'new-cap': ERROR, // 要求构造函数首字母大写
        'new-parens': ERROR, // 要求调用无参构造函数时有圆括号
        'no-array-constructor': ERROR, // 禁用 Array 构造函数
        'no-new-object': ERROR, // 禁用 Object 的构造函数
        'no-multi-assign': ERROR, // 禁止连续赋值

        // 始终补全分号
        'semi': [ERROR, 'always'],

        // ES6
        'no-duplicate-imports': ERROR, // Disallow duplicate imports
        'no-useless-rename': ERROR, // disallow renaming import, export, and destructured assignments to the same name
        'no-var': ERROR, // 要求使用 let 或 const 而不是 var
    }
}