npm install eslint --save-dev
npm install eslint --global
npx eslint --init
该命令会引导用户根据项目需求生成 .eslintrc
配置文件。
{
"env": {
"browser": true,
"es2021": true
},
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 12,
"sourceType": "module"
},
"rules": {
"indent": ["error", 2],
"linebreak-style": ["error", "unix"],
"quotes": ["error", "double"],
"semi": ["error", "always"]
}
}
npx eslint yourfile.js
下面是ESLint所有配置参数的详细说明
参数名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
env | 对象 | 无 | 指定环境(例如:browser 、node 等),设置全局变量。 |
globals | 对象 | 无 | 配置额外的全局变量,设置为true 表示可写,为false 表示只读。 |
parser | 字符串 | espree | 指定解析器。可以使用espree 、babel-eslint 、@typescript-eslint/parser 等。 |
parserOptions | 对象 | 无 | 配置解析器选项,比如ecmaVersion 、sourceType 、ecmaFeatures 。 |
plugins | 数组 | 无 | 使用的插件列表。 |
settings | 对象 | 无 | 为特定插件提供共享设置。 |
rules | 对象 | 无 | 自定义规则及其错误级别(例如:off 、warn 、error )。 |
extends | 数组或字符串 | 无 | 配置文件扩展,可以继承多个共享配置。 |
overrides | 数组 | 无 | 覆盖特定文件的配置,可以针对特定文件类型应用不同的规则。 |
ignorePatterns | 数组 | 无 | 指定要忽略的文件和目录。 |
root | 布尔值 | false | 指定当前配置文件为根配置文件,ESLint在寻找配置文件时不会再往上查找。 |
noInlineConfig | 布尔值 | false | 禁用文件内的注释配置(如/* eslint-disable */ )。 |
reportUnusedDisableDirectives | 布尔值或字符串 | false | 报告未使用的eslint-disable 注释。值可以是true 、false 、error 、warn 。 |
processor | 字符串 | 无 | 指定处理器,允许在Lint前对文件内容进行转换。 |
以下是ESLint常用规则,更多规则可以参考官网
规则名称 | 默认值 | 描述 |
---|---|---|
accessor-pairs | off | 强制getter和setter成对出现在对象中。 |
array-bracket-newline | off | 强制数组括号内换行。 |
array-bracket-spacing | off | 强制数组括号内的空格一致性。 |
array-callback-return | off | 强制数组方法的回调函数中有return语句。 |
array-element-newline | off | 强制数组元素的换行。 |
arrow-body-style | off | 要求箭头函数体使用大括号。 |
arrow-parens | off | 要求箭头函数的参数使用圆括号。 |
arrow-spacing | off | 强制箭头函数的箭头前后使用一致的空格。 |
block-scoped-var | off | 强制在块作用域中使用变量。 |
block-spacing | off | 强制单行代码块的空格。 |
brace-style | off | 强制代码块大括号风格。 |
callback-return | off | 强制数组方法的回调函数中有return语句。 |
camelcase | off | 强制使用驼峰命名法。 |
capitalized-comments | off | 强制注释首字母大写。 |
class-methods-use-this | off | 强制类方法使用this 。 |
comma-dangle | off | 强制使用尾逗号。 |
comma-spacing | off | 强制逗号前后的空格一致性。 |
comma-style | off | 强制使用一致的逗号风格。 |
complexity | off | 强制代码复杂度限制。 |
computed-property-spacing | off | 强制计算属性的空格一致性。 |
consistent-return | off | 强制函数返回值的一致性。 |
consistent-this | off | 强制this 的别名一致性。 |
curly | off | 强制所有控制语句使用一致的大括号风格。 |
default-case | off | 要求switch 语句中有default 分支。 |
dot-location | off | 强制对象访问符的位置。 |
dot-notation | off | 强制使用点号符访问属性。 |
eol-last | off | 要求文件末尾保留一行空行。 |
eqeqeq | off | 强制使用全等(=== 和 !== )操作符。 |
func-call-spacing | off | 强制函数调用间的空格一致性。 |
func-names | off | 强制函数表达式有名称。 |
func-style | off | 强制一致地使用函数声明或函数表达式。 |
function-paren-newline | off | 强制函数括号内换行的一致性。 |
generator-star-spacing | off | 强制生成器函数星号周围空格的一致性。 |
guard-for-in | off | 强制for-in 循环中有一个if 语句。 |
handle-callback-err | off | 强制回调错误处理。 |
id-blacklist | off | 禁用指定的标识符。 |
id-length | off | 强制标识符最小和最大长度。 |
id-match | off | 强制标识符匹配指定的正则表达式。 |
implicit-arrow-linebreak | off | 强制隐式返回的箭头函数体的换行。 |
indent | off | 强制一致的缩进。 |
jsx-quotes | off | 强制JSX属性中一致使用双引号或单引号。 |
key-spacing | off | 强制对象字面量中冒号前后的空格一致性。 |
keyword-spacing | off | 强制关键字前后空格的一致性。 |
line-comment-position | off | 强制行注释的位置。 |
linebreak-style | off | 强制使用一致的换行风格。 |
lines-around-comment | off | 强制注释周围有空行。 |
lines-between-class-members | off | 强制类成员之间有空行。 |
max-depth | off | 强制块语句的最大嵌套深度。 |
max-len | off | 强制一行的最大长度。 |
max-lines | off | 强制文件的最大行数。 |
max-lines-per-function | off | 强制函数的最大行数。 |
max-nested-callbacks | off | 强制回调函数的最大嵌套深度。 |
max-params | off | 强制函数定义中最多允许的参数数量。 |
max-statements | off | 强制函数块中的语句最大数量。 |
max-statements-per-line | off | 强制每一行中的语句数量。 |
multiline-comment-style | off | 强制多行注释的风格。 |
multiline-ternary | off | 强制三元表达式的换行。 |
new-cap | off | 要求构造函数首字母大写。 |
new-parens | off | 强制或禁止调用无参构造函数时有圆括号。 |
newline-per-chained-call | off | 强制每个方法调用都换行。 |
no-alert | off | 禁用alert 、confirm 和prompt 。 |
no-array-constructor | off | 禁用Array 构造函数。 |
no-async-promise-executor | off | 禁止使用async 函数作为Promise 执行器。 |
no-await-in-loop | off | 禁止在循环中使用await 。 |
no-bitwise | off | 禁用按位操作符。 |
no-caller | off | 禁用arguments.caller 或arguments.callee 。 |
no-case-declarations | off | 不允许在case 或default 子句中使用词法声明。 |
no-class-assign | off | 禁止修改类声明的变量。 |
no-compare-neg-zero | off | 禁止与负零进行比较。 |
no-cond-assign | off | 禁止条件表达式中出现赋值操作符。 |
no-confusing-arrow | off | 禁止在可能与比较操作符相混淆的地方使用箭头函数。 |
no-console | off | 禁用console 。 |
no-const-assign | off | 禁止修改const 声明的变量。 |
no-constant-condition | off | 禁止在条件中使用常量表达式。 |
no-constructor-return | off | 禁止构造函数中返回值。 |
no-continue | off | 禁用continue 语句。 |
no-control-regex | off | 禁止正则表达式中的控制字符。 |
no-debugger | off | 禁用debugger 。 |
no-delete-var | off | 禁止删除变量。 |
no-div-regex | off | 禁止正则 |
// 在项目根目录创建自定义规则文件 custom-rules/no-console.js
module.exports = {
create: function(context) {
return {
CallExpression(node) {
if (node.callee.object.name === 'console') {
context.report({
node,
message: 'Unexpected console statement.'
});
}
}
};
}
};
在 .eslintrc.js
中添加自定义规则:
module.exports = {
// 其他配置...
rules: {
'no-console': 'off',
'custom-rules/no-console': 'error'
},
plugins: ['custom-rules']
};