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 的环境判断需保留在配置里而非静态表内。