ESLint 配置字段说明
root
设为 true 表示本文件为根配置,ESLint 不再向父目录继续查找配置文件。适合在 monorepo 子包或独立项目中避免误用上层规则。
parserOptions
传给解析器的选项,常见项包括:
sourceType: "module" :按 ES 模块解析(import / export)。
- 实验语法 :旧项目里可能用
babel-eslint 解析尚未标准化的语法;新项目更常见的是 @babel/eslint-parser(需配合 Babel 配置)。
env
声明代码运行环境,从而启用对应全局变量与语法假设,例如:
browser :浏览器全局(如 window、document)。
es6 / es2021 等:对应 ECMAScript 版本的全局与语法。
extends
继承已有规则集,减少手写规则量,例如:
eslint:recommended:ESLint 内置推荐规则。
plugin:vue/recommended :Vue 官方推荐风格(需已安装 eslint-plugin-vue)。
rules
在 extends 基础上覆盖或关闭 单条规则;"off" / "warn" / "error"(或 0 / 1 / 2)控制严重级别。项目里的注释一般写在各条规则旁,便于团队理解取舍原因。
说明 :若文档或旧配置里仍写 babel-eslint,新工程可迁移到 @babel/eslint-parser,并与项目的 Babel 版本对齐。
常用 rules 备忘(摘自某 Vue 项目配置)
严重级别:0 / 'off' 关闭,1 / 'warn' 警告,2 / 'error' 错误。下文用关闭 / 警告 / 错误表述。
环境与调试(随构建环境切换):
no-console:生产 错误,开发关闭。
no-debugger:同上。
Vue(eslint-plugin-vue)
| 规则 |
级别与要点 |
说明 |
vue/attribute-hyphenation |
关闭 |
不强制模板属性用 kebab-case |
vue/max-attributes-per-line |
错误 |
单行最多 10 个属性;多行时每行 1 个且首行不放额外属性 |
vue/singleline-html-element-content-newline |
关闭 |
不强制单行标签内换行 |
vue/multiline-html-element-content-newline |
关闭 |
不强制多行标签内换行 |
vue/html-closing-bracket-newline |
关闭 |
不强制闭合 > 单独换行 |
vue/no-v-html |
关闭 |
允许 v-html(需注意 XSS) |
vue/html-self-closing |
关闭 |
不强制自闭合标签写法 |
vue/require-default-prop |
关闭 |
不强制 prop 写默认值 |
vue/require-prop-types |
关闭 |
不强制 prop 写类型 |
类、函数、this 与构造
| 规则 |
级别与要点 |
说明 |
accessor-pairs |
错误 |
同时存在 getter/setter 时需成对 |
constructor-super |
错误 |
派生类构造里须先 super 再访问 this |
consistent-this |
错误,别名 that |
统一用指定别名表示 this |
curly |
错误,multi-line |
多行或易歧义时要求块语句带 {} |
new-cap |
错误 |
new 须搭配大写开头的构造函数;允许直接调用大写函数(非构造) |
new-parens |
错误 |
new Foo() 须带括号 |
no-class-assign |
错误 |
禁止对类名再赋值 |
no-const-assign |
错误 |
禁止对 const 绑定再赋值 |
no-dupe-class-members |
错误 |
禁止类里重复成员名 |
no-dupe-args |
错误 |
禁止函数参数重名 |
no-func-assign |
错误 |
禁止对函数声明再赋值 |
no-inner-declarations |
错误,仅 functions |
禁止在嵌套块内声明 function(顶层或函数体可) |
no-new-symbol |
错误 |
禁止 new Symbol() |
no-obj-calls |
错误 |
禁止把 Math / JSON / Reflect 当函数调用 |
no-useless-constructor |
错误 |
禁止空壳或仅调 super 的无用构造器 |
no-this-before-super |
错误 |
在 super() 前禁止用 this / super |
wrap-iife |
错误,any |
IIFE 外层须用括号包起来 |
比较、控制流与异常
| 规则 |
级别与要点 |
说明 |
eqeqeq |
错误,always,null 忽略 |
用 === / !==;可与 null 宽松比较 |
no-dupe-keys |
错误 |
对象字面量禁止重复键 |
no-duplicate-case |
错误 |
switch 中禁止重复 case |
no-fallthrough |
错误 |
case 贯穿须写注释或改写 |
no-self-compare |
错误 |
禁止 x === x 等无意义自比 |
no-sequences |
错误 |
禁止逗号表达式取副作用 |
no-unmodified-loop-condition |
错误 |
循环条件里用到的变量应在循环内被更新 |
no-unneeded-ternary |
错误,defaultAssignment: false |
禁止可简化的三元 |
no-unreachable |
错误 |
return/throw/continue/break 后禁止死代码 |
no-unsafe-finally |
错误 |
finally 里禁止 return/throw 等破坏正常完成 |
no-throw-literal |
错误 |
禁止 throw 非 Error 实例 |
valid-typeof |
错误 |
typeof 结果须与合法字符串比较 |
use-isnan |
错误 |
用 Number.isNaN / isNaN 判断 NaN,勿直接与 NaN 比较 |
yoda |
错误,never |
禁止尤达条件式(如 if ("red" === color)) |
危险写法与全局污染
| 规则 |
级别与要点 |
说明 |
no-eval |
错误 |
禁止 eval |
no-implied-eval |
错误 |
禁止 setTimeout(string) 等隐式 eval |
no-with |
错误 |
禁止 with |
no-extend-native |
错误 |
禁止改内置原型 |
no-native-reassign |
错误 |
禁止对只读全局再赋值 |
no-new-wrappers |
错误 |
禁止 new String/Number/Boolean |
no-iterator |
错误 |
禁止 __iterator__ |
no-labels |
错误,allowLoop/Switch: false |
限制 label |
no-label-var |
错误 |
label 名勿与变量冲突 |
no-lone-blocks |
错误 |
禁止无意义的单独块 |
正则与字符串
| 规则 |
级别与要点 |
说明 |
no-control-regex |
关闭 |
原注释与级别矛盾:关闭时不检查控制字符 |
no-empty-character-class |
错误 |
禁止 [] 中空类 |
no-invalid-regexp |
错误 |
RegExp 构造参数须合法 |
no-regex-spaces |
错误 |
正则字面量里禁止多空格 |
no-useless-escape |
关闭 |
不报告「多余」转义(常为避免误报而关) |
变量、require 与模块
| 规则 |
级别与要点 |
说明 |
no-delete-var |
错误 |
禁止对变量用 delete |
no-redeclare |
错误 |
禁止同作用域重复声明 |
no-undef |
错误 |
禁止未声明标识符 |
no-undef-init |
错误 |
禁止 var x = undefined |
no-unused-vars |
错误,vars: all,args: after-used |
未使用变量报错;参数从后往前算,仅末尾须被使用 |
no-var |
错误 |
禁止 var |
prefer-const |
错误 |
未再赋值的 let 应改为 const |
one-var |
错误,initialized: 'never' |
已初始化的变量倾向分开声明 |
global-require |
警告 |
倾向顶层 require,避免块内动态 require |
no-new-require |
错误 |
禁止 new require(...) |
no-path-concat |
错误 |
路径拼接倾向用 path API |
no-new-object |
错误 |
倾向 {} 而非 new Object() |
no-array-constructor |
警告 |
倾向字面量 [],除非要定长 |
赋值、返回与解构
| 规则 |
级别与要点 |
说明 |
no-return-assign |
错误,except-parens |
return 右侧禁止易混为比较的赋值,括号内除外 |
no-self-assign |
错误 |
禁止 a = a |
no-ex-assign |
错误 |
禁止对 catch (e) 的 e 再赋值 |
prefer-destructuring |
错误,object/array: false |
不强制解构取属性(仅关规则占位时可保留默认) |
no-empty-pattern |
错误 |
禁止空的解构模式(易隐藏笔误) |
其它逻辑与风格辅助
| 规则 |
级别与要点 |
说明 |
camelcase |
错误,properties: always |
属性名倾向驼峰 |
dot-location |
错误,property |
. 写在下一行属性侧 |
no-extra-boolean-cast |
错误 |
禁止双重 !! 等冗余布尔包装 |
no-extra-parens |
错误,functions |
仅对函数相关多余括号报错 |
no-floating-decimal |
错误 |
禁止 .5、5. 写法,须写 0.5 / 5.0 |
no-octal |
错误 |
禁止八进制字面量 |
no-octal-escape |
错误 |
禁止字符串里八进制转义 |
no-sparse-arrays |
错误 |
禁止稀疏数组(多余逗号洞) |
no-multi-str |
错误 |
禁止反斜杠续行的多行字符串 |
no-multiple-empty-lines |
错误,max: 1 |
连续空行最多 1 |
no-trailing-spaces |
错误 |
行尾禁止空白 |
eol-last |
错误 |
文件末尾须换行 |
no-mixed-spaces-and-tabs |
错误 |
缩进勿混 tab 与空格 |
no-multi-spaces |
错误 |
禁止多处无意义多空格 |
no-irregular-whitespace |
错误 |
禁止非常规 Unicode 空白 |
no-unexpected-multiline |
错误 |
避免 ASI 导致的意外多行衔接 |
no-whitespace-before-property |
错误 |
.prop 前禁止空格 |
no-underscore-dangle |
错误 |
标识符默认禁止首尾 _ |
no-useless-call |
错误 |
禁止可用普通调用替代的 call/apply |
no-useless-computed-key |
错误 |
禁止可写成点访问的计算键 |
generator-star-spacing |
错误 |
function* 的 * 两侧空格 |
yield-star-spacing |
错误,both |
yield* 的 * 两侧空格 |
格式与空格(Stylistic)
| 规则 |
级别与要点 |
说明 |
arrow-spacing |
错误 |
箭头 => 两侧空格 |
block-spacing |
错误,always |
块 { } 内侧空格一致 |
brace-style |
错误,1tbs,可单行 |
One True Brace Style |
comma-dangle |
错误,never |
禁止尾随逗号 |
comma-spacing |
错误 |
逗号前无空格、后有空格 |
comma-style |
错误,last |
逗号在行尾 |
indent |
错误,2 空格,SwitchCase: 2 |
缩进 |
key-spacing |
错误 |
对象键值冒号两侧空格 |
keyword-spacing |
错误 |
if/function 等关键字两侧空格 |
object-curly-spacing |
错误,always,objectsInObjects: false |
{ } 内侧有空格;嵌套对象边不双空格 |
array-bracket-spacing |
错误,never |
[ ] 内侧不空格 |
quotes |
错误,单引号,avoidEscape / allowTemplateLiterals |
默认单引号;必要时可用双引号或模板字符串避免转义 |
semi |
错误,never |
不使用分号(与 ASI 风格一致) |
semi-spacing |
错误 |
分号前后空格 |
space-before-blocks |
错误,always |
{ 前须有空格 |
space-before-function-paren |
错误,never |
function() 与 fn() 的 ( 前无空格 |
space-in-parens |
错误,never |
圆括号内侧不空格 |
space-infix-ops |
错误 |
中缀运算符两侧空格 |
space-unary-ops |
错误 |
单词一元符(new、typeof)要空格;++ 等不加 |
spaced-comment |
错误,always + markers |
// / /* 后须空格;保留特殊 marker 列表 |
template-curly-spacing |
错误,never |
模板 ${} 内不空格 |
operator-linebreak |
错误,默认行尾断行,?: 在行首 |
换行风格 |
padded-blocks |
错误,never |
块内首尾不空行 |
其它
| 规则 |
级别与要点 |
说明 |
radix |
错误 |
parseInt 须写进制参数 |
若将上述表迁回 .eslintrc.js,可把「级别与要点」列还原为数组形式;no-console / no-debugger 的环境判断需保留在配置里而非静态表内。