/** npm i babel-eslint * rules: { "规则名": [规则值, 规则配置] } "off"或者0 //关闭规则关闭 "warn"或者1 //在打开的规则作为警告(不影响退出代码) "error"或者2 //把规则作为一个错误(退出代码触发时为1) */ module.exports = { root: true, env: { browser: true, es6: true, mocha: true, node: true, }, globals: { 'JSONEditor': true, }, extends: ['plugin:vue/recommended', 'eslint:recommended'], rules: { 'no-constant-condition': ['error', { checkLoops: false }], // 支持while true 'vue/max-attributes-per-line': [// 强制每行的最大属性数 2, { singleline: 10, // 当开始标记在一行中时,每行的最大属性数。默认值为1 multiline: { // 当开始标记位于多行中时,每行的最大属性数。默认值为1 max: 1, allowFirstLine: false, }, }, ], 'vue/singleline-html-element-content-newline': 'off', // 在单行元素的内容之前和之后需要换行 'vue/multiline-html-element-content-newline': 'off', // 在多行元素的内容之前和之后需要换行 'vue/name-property-casing': ['error', 'PascalCase'], // 在Vue组件中为name属性强制使用特定大小写 'PascalCase' 将name属性强制为Pascal大小写。 'vue/no-v-html': 'off', // 禁止使用v-html防止XSS攻击 'accessor-pairs': 2, // 在对象中使用getter/setter 'arrow-parens': ['error', 'as-needed'], // 箭头函数用小括号括起来 "as-needed" 当只有一个参数时允许省略参数 'arrow-spacing': [// =>的前/后括号 2, { before: true, // '=>'前要空格 after: true, // '=>'后要空格 }, ], 'block-spacing': [2, 'always'], // 块代码与上下行要有强制执行一致的间距 'always'(默认)需要一个或多个空格 'brace-style': [// 大括号风格 2, '1tbs', // (默认)强制执行一个真正的大括号风格 { allowSingleLine: true, // (默认false)允许一个块打开和关闭括号在同一行上 }, ], 'camelcase': [// 强制驼峰法命名 0, { properties: 'always', // (默认)为属性名称强制执行camelcase 样式 当 'never' 时不检查属性名称 }, ], 'comma-dangle': ['error', 'always-multiline'], // 对象字面量项尾不能有逗号 'always-multiline':需要尾随逗号时的最后一个元素或属性是一个不同的线比所述封闭]或}和不允许尾随逗号时的最后一个元素或属性是基于相同行的闭合]或} 'comma-spacing': [// 逗号前后的空格 2, { before: false, // (默认)在逗号前不允许有空格 after: true, // (默认)在逗号后需要一个或多个空格 }, ], 'comma-style': [2, 'last'], // 逗号风格,换行时在行首还是行尾 'last':(默认)在数组元素,对象属性或变量声明的同一行之后和同一行都需要逗号 'constructor-super': 2, // 非派生类不能调用super,派生类必须调用super 'curly': [2, 'multi-line'], // 必须使用 if(){} 中的{} 'dot-location': [2, 'property'], // 对象访问符的位置,换行的时候在行首还是行尾 'eol-last': 2, // 文件以单一的换行符结束 'eqeqeq': ['error', 'always', { null: 'ignore' }], // 必须使用全等 'always':选项(默认)强制使用===和!==在任何情况下 { null: 'ignore' }- 不要将此规则应用于null。 'generator-star-spacing': [// 生成器函数*的前后空格 2, { before: true, // 强制关键字*和function关键字之间的间距。如果是true,则需要空间,否则空间不允许。在对象字面速记方法中*,由于它们缺少function关键字,因此未检查之前的间距。 after: true, // 强制*和函数名称(或匿名生成器函数的左括号)之间的空格。如果是true,则需要空间,否则空间不允许。 }, ], 'handle-callback-err': [2, '^(err|error)$'], // nodejs 处理错误 '^(err|error)$':则该规则会报告参数名称可能出现的未处理错误err,error或anySpecificError indent: [// 缩进风格 2, 2, { SwitchCase: 1, // (默认:0)指定 switch-case 语句的缩进级别 }, ], 'jsx-quotes': [2, 'prefer-single'], // 'prefer-single':对所有不包含单引号的JSX属性值强制使用单引号。 'key-spacing': [// key值前面是否要有空格 2, { beforeColon: false, // (默认值)不允许在对象文字中的键和冒号之间使用空格。 afterColon: true, // 在对象文字中至少需要一个键和冒号之间的空格。 }, ], 'keyword-spacing': [// 强制执行围绕关键字和关键字标记的一致空格 2, { before: true, // (默认)在关键字之前至少需要一个空格 after: true, // (默认)在关键字后至少需要一个空格 }, ], 'new-cap': [// 函数名首行大写必须使用new方式调用,首行小写必须用不带new方式调用 2, { newIsCap: true, // (默认)要求new使用大写启动函数调用所有操作符。 capIsNew: false, // (默认)要求所有大写启动的函数与new操作符一起调用。 }, ], 'new-parens': 2, // 在使用new关键字调用不带参数的构造函数时需要括号,以便提高代码清晰度。 'no-array-constructor': 2, // 禁止使用数组构造器 'no-caller': 2, // 禁止使用arguments.caller或arguments.callee 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', // 禁止使用console 'no-class-assign': 2, // 禁止修改const声明的变量 'no-cond-assign': 2, // 禁止在条件表达式中使用赋值语句 'no-const-assign': 2, // 禁止修改const声明的变量 'no-control-regex': 0, // 禁止在正则表达式中使用控制字符 'no-delete-var': 2, // 不能对var声明的变量使用delete操作符 'no-dupe-args': 2, // 函数参数不能重复 'no-dupe-class-members': 2, // 标记在级别成员中使用重复名称。 'no-dupe-keys': 2, // 在创建对象字面量时不允许键重复 {a:1,a:1} 'no-duplicate-case': 2, // switch中的case标签不能重复 'no-empty-character-class': 2, // 正则表达式中的[]内容不能为空 'no-empty-pattern': 2, // 不允许空块语句。 该规则忽略包含注释的块语句(例如,在一个空catch或最后一个try语句块中,以指示无论错误如何,执行都应该继续)。 'no-eval': 2, // 禁止使用eval 'no-ex-assign': 2, // 禁止给catch语句中的异常参数赋值 'no-extend-native': 2, // 禁止扩展native对象 'no-extra-bind': 2, // 禁止不必要的函数绑定 'no-extra-boolean-cast': 2, // 禁止不必要的bool转换 'no-extra-parens': [2, 'functions'], // 禁止非必要的括号 'no-fallthrough': 2, // 禁止switch穿透 'no-floating-decimal': 2, // 禁止省略浮点数中的0 .5 3. 'no-func-assign': 2, // 禁止重复的函数声明 'no-implied-eval': 2, // 禁止使用隐式eval 'no-inner-declarations': [2, 'functions'], // 禁止在块语句中使用声明(变量或函数) 'no-invalid-regexp': 2, // 禁止无效的正则表达式 'no-irregular-whitespace': 2, // 不能有不规则的空格 'no-iterator': 2, // 禁止使用__iterator__ 属性 'no-label-var': 2, // label名不能与var声明的变量名相同 'no-labels': [// 禁止标签声明 2, { allowLoop: false, // (boolean,默认是false) - 如果设置了此选项true,则此规则将忽略粘贴到循环语句的标签 allowSwitch: false, // (boolean,默认是false) - 如果设置了此选项true,则此规则将忽略粘贴到开关语句的标签。 }, ], 'no-lone-blocks': 2, // 禁止不必要的嵌套块 'no-mixed-spaces-and-tabs': 2, // 禁止混用tab和空格 'no-multi-spaces': 2, // 不能用多余的空格 'no-multi-str': 2, // 字符串不能用\换行 'no-multiple-empty-lines': [// 空行最多不能超过1行 2, { max: 1, }, ], 'no-native-reassign': 2, // 不能重写native对象 'no-negated-in-lhs': 2, // in 操作符的左边不能有! 'no-new-object': 2, // 禁止使用new Object() 'no-new-require': 2, // 禁止使用new require 'no-new-symbol': 2, // 防止Symbol与new操作员的意外呼叫。 'no-new-wrappers': 2, // 禁止使用new创建包装实例,new String new Boolean new Number 'no-obj-calls': 2, // 不能调用内置的全局对象,比如Math() JSON() 'no-octal': 2, // 禁止使用八进制数字 'no-octal-escape': 2, // 禁止使用八进制转义序列 'no-path-concat': 2, // node中不能使用__dirname或__filename做路径拼接 'no-proto': 2, // 禁止使用__proto__属性 'no-redeclare': 2, // 禁止重复声明变量 'no-regex-spaces': 2, // 禁止在正则表达式字面量中使用多个空格 /foo bar/ 'no-return-assign': [2, 'except-parens'], // return 语句中不能有赋值表达式 'except-parens':(默认):除非用圆括号括起来,否则不允许赋值。 'no-self-assign': 2, // 消除自我分配。 'no-self-compare': 2, // 不能比较自身 'no-sequences': 2, // 禁止使用逗号运算符 'no-shadow-restricted-names': 2, // 严格模式中规定的限制标识符不能作为声明时的变量名使用 'no-spaced-func': 2, // 函数调用时 函数名与()之间不能有空格 'no-sparse-arrays': 2, // 禁止稀疏数组, [1,,2] 'no-this-before-super': 2, // 在调用super()之前不能使用this或super 'no-throw-literal': 2, // 禁止抛出字面量错误 throw "error"; 'no-trailing-spaces': 2, // 一行结束后面不要有空格 'no-undef': 2, // 不能有未定义的变量 'no-undef-init': 2, // 变量初始化时不能直接给它赋值为undefined 'no-unexpected-multiline': 2, // 避免多行表达式 'no-unmodified-loop-condition': 2, // 查找循环条件内的引用,然后检查这些引用的变量是否在循环中被修改。 'no-unneeded-ternary': [// 禁止不必要的嵌套 var isYes = answer === 1 ? true : false; 2, { defaultAssignment: false, // 不允许将条件表达式作为默认的分配模式 }, ], 'no-unreachable': 2, // 不能有无法执行的代码 'no-unsafe-finally': 2, // 不允许return,throw,break,和continue里面的语句finally块。它允许间接使用,如in function或class定义。 'no-unused-vars': [// 消除未使用的变量,函数和函数的参数。 2, { vars: 'all', // 检查所有变量的使用情况,包括全局范围内的变量。这是默认设置。 args: 'none', // 参数不检查 }, ], 'no-useless-call': 2, // 禁止不必要的call和apply 'no-useless-computed-key': 2, // 禁止不必要地使用计算属性键。 'no-useless-constructor': 2, // 可以在不改变类的工作方式的情况下安全地移除的类构造函数。 'no-useless-escape': 0, // 转义字符串,模板文字和正则表达式中的非特殊字符不会产生任何影响 'no-whitespace-before-property': 2, // 如果对象的属性位于同一行上,则该规则不允许围绕点或在开头括号之前留出空白。当对象和属性位于不同的行上时,此规则允许使用空格,因为向更长的属性链添加换行符是很常见的 'no-with': 2, // 禁用with 'one-var': [// 连续声明 2, { initialized: 'never', // 每个作用域需要多个变量声明用于初始化变量 }, ], 'operator-linebreak': [// 换行时运算符在行尾还是行首 2, 'after', // 需要将换行符置于操作员之后 { overrides: { // 覆盖用于指定operatorsThe默认配置的全局设置是 "after", { "overrides": { "?": "before", ":": "before" } }的afterExamples 不正确代码此规则与默认"after"选项 '?': 'before', ':': 'before', }, }, ], 'padded-blocks': [2, 'never'], // 块语句内行首行尾是否要空行 quotes: [// 引号类型 `` "" '' 2, 'single', { avoidEscape: true, allowTemplateLiterals: true, }, ], semi: [2, 'never'], // 语句强制分号结尾 'semi-spacing': [// 分号前后空格 2, { before: false, // 前不需要 after: true, // 后需要 }, ], 'space-before-blocks': [2, 'always'], // 不以新行开始的块{前面要不要有空格 'space-before-function-paren': ['error', 'always'], // 函数定义时括号前面要不要有空格 'space-in-parens': [2, 'never'], // 小括号里面要不要有空格 'space-infix-ops': 2, // 中缀操作符周围要不要有空格 'space-unary-ops': [// 一元运算符的前/后要不要加空格 2, { words: true, // 适用于一元字运营商,如:new,delete,typeof,void,yield nonwords: false, // 适用于一元运算符,如:-,+,--,++,!,!! }, ], 'spaced-comment': [// 注释风格要不要有空格什么的 2, 'always', // 要有空格 { markers: ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','], }, ], 'template-curly-spacing': [2, 'never'], // 保持模板文字内部空间的一致性。 'never':(默认情况下) - 不允许大括号内的空格。 'use-isnan': 2, // 禁止比较时使用NaN,只能用isNaN() 'valid-typeof': 2, // 必须使用合法的typeof的值 'wrap-iife': [2, 'any'], // 立即执行函数表达式的小括号风格 'yield-star-spacing': [2, 'both'], // 强制执行*周围 yield*表达式的间距。 'both':yield和*之间的空格需要空间 *和参数之间的间距需要空间 yoda: [2, 'never'], // 禁止尤达条件 'prefer-const': 2, // 首选const 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, // 用于通知执行的 JavaScript 环境停止执行,并在代码中的当前位置启动调试器。随着现代调试和开发工具的出现,这已经失宠。生产代码绝对不应该包含debugger,因为它会导致浏览器停止执行代码并打开适当的调试器。 'object-curly-spacing': [// 大括号内是否允许不必要的空格 2, 'always', // 需要大括号内的空格({}除外) { objectsInObjects: false, // 要求在以对象元素开头和/或以对象元素结尾的对象的大括号内部进行间隔(在第一个选项设置为never时应用) }, ], 'array-bracket-spacing': [2, 'never'], // 是否允许非空数组里面有多余的空格 'vue/script-indent': [// 类似于核心缩进规则,但是它在