ESLint 配置字段说明

ESLint 配置字段说明

root

设为 true 表示本文件为根配置,ESLint 不再向父目录继续查找配置文件。适合在 monorepo 子包或独立项目中避免误用上层规则。

parserOptions

传给解析器的选项,常见项包括:

  • sourceType: "module" :按 ES 模块解析(import / export)。
  • 实验语法 :旧项目里可能用 babel-eslint 解析尚未标准化的语法;新项目更常见的是 @babel/eslint-parser(需配合 Babel 配置)。

env

声明代码运行环境,从而启用对应全局变量与语法假设,例如:

  • browser :浏览器全局(如 windowdocument)。
  • 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 错误,alwaysnull 忽略 === / !==;可与 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 错误 禁止 throwError 实例
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: allargs: 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 错误 禁止 .55. 写法,须写 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 错误,alwaysobjectsInObjects: 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 错误 单词一元符(newtypeof)要空格;++ 等不加
spaced-comment 错误,always + markers // / /* 后须空格;保留特殊 marker 列表
template-curly-spacing 错误,never 模板 ${} 内不空格
operator-linebreak 错误,默认行尾断行,?: 在行首 换行风格
padded-blocks 错误,never 块内首尾不空行

其它

规则 级别与要点 说明
radix 错误 parseInt 须写进制参数

若将上述表迁回 .eslintrc.js,可把「级别与要点」列还原为数组形式;no-console / no-debugger 的环境判断需保留在配置里而非静态表内。

相关推荐
Lkstar1 小时前
面试官让我手写 Promise.all / Promise.race / Promise.allSettled,我直接水灵灵地写出来了
javascript·面试
gogoing1 小时前
CSS 属性值计算过程(Computed Value)
前端·css
gogoing1 小时前
webpack 的性能优化
前端·javascript
gogoing1 小时前
Node.js 模块查找策略(require 完整流程)
javascript·node.js
桃花键神1 小时前
Bright Data Web Scraping指南 2026: 使用 MCP + Dify 自动采集海外社交媒体数据
大数据·前端·人工智能
gogoing1 小时前
await fetch() 的两阶段设计
前端·javascript
gogoing1 小时前
前端首屏加载优化
前端·javascript
gogoing1 小时前
重排与重绘
前端·javascript
打小就很皮...2 小时前
基于Python + LangChain + 通义千问的聊天机器人实战
前端·langchain·机器人·千问