Skip to content

本节内容主要记录 Eslint 涉及到的各种命令行。

在前文中,应该已经了解到了 Eslint 检测文件的基础语法:

shell
npx eslint [options] [file|dir|glob]*

上述语法中的 options 即是本节重点论述内容。

参考文档:Eslint命令行

9-1.基础配置

9-1-1.--no-eslintrc

忽略 .eslintrc.*package.json 文件中的配置。

9-1-2.-c, --config

指定配置文件。

9-1-3.--env

指定语言环境。

9-1-4.--ext

指定匹配目标文件的扩展名。

--ext 只适用于检测目标为目录的情况。若使用匹配模式或指定文件名,则忽略 --ext

9-1-5.--global

指定全局变量。

9-1-6.--parser

指定解析器,默认使用 espree

9-1-7.--parser-options

指定解析器的配置选项。

9-1-8.--resolve-plugins-relative-to

指定解析插件的目录位置。

默认为当前目录,即默认从当前目录下的 node_modules 中加载。

9-2.指定规则与插件

9-2-1.--plugin

指定要加载的插件。

shell
npx eslint --plugin jquery file.js
npx eslint --plugin eslint-plugin-mocha file.js

9-2-2.--rule

指定规则。

shell
npx eslint --rule 'quotes: [error, double]'
npx eslint --rule 'guard-for-in: error' --rule 'brace-style: [error, 1tbs]'
npx eslint --rule 'jquery/dollar-sign: error'

9-3.修复问题

9-3-1.--fix

Eslint 尽可能的修复可以修复的问题。

这些修复会对文件本身产生影响。

9-3-2.--fix-dry-run

此项与 --fix 的效果相同,但有一点不同:修复后的代码不会保存在文件系统中。

这使得从 stdin 中修复代码成为可能(当与 --stdin 标志一起使用时)。

因为默认的格式不输出固定的代码,你必须使用另一种格式(如 json)来获得固定的内容。这里有该模式的示例:

shell
yarn lint:command-line --no-eslintrc --stdin --fix-dry-run --format=js

此标志适用于需要命令行进行自动修复却不保存到文件系统的集成(例如编辑器插件)。

9-3-3.--fix-type

指定在使用 --fix--fix-dry-run 时指定的修复类型。

  1. problem 修复代码中的潜在错误
  2. suggestion 改进代码
  3. layout 修复不改变程序结构(AST)的问题
  4. directive 修复内联指令,如 // eslint-disable。

9-4.忽略文件

9-4-1.--ignore-path

指定 .eslintignore 文件位置。

Eslint 默认从当前工作目录下寻找 .eslintignore 文件。

可以通过此命令行选项进行覆盖此默认情况。

9-4-2.--no-ignore

禁止根据 .eslintignore--ignore-path--ignore-patternignorePatterns 属性排除文件。

9-4-3.--ignore-pattern

指定目标忽略文件的匹配格式。

使用方式基本雷同 .eslintignore 的匹配方式。

要注意的一点是如果要指定多种匹配格式的话:

shell
# work
eslint file.js --ignore-pattern 'lib/*.js' --ignore-pattern 'util/*.js'

# not work
eslint file.js --ignore-pattern 'lib/*.js','util/*.js'

9-5.使用stdin

什么是stdin

9-5-1.--stdin

shell
# 相当于 在pipe流中运行eslint 然后将结果从标准化输入中读取
cat main.js  | npx eslint --stdin

更多的场景下,一般与 --fix-dry-run 联用(必须设置 --format,譬如可以将结果以 json 形式读取出来):

shell
cat main.js | npx eslint --stdin --fix-dry-run --format=json

9-6.处理警告

9-6-1.--quiet

关闭 warn 警告,只会报告 error 错误警告。

9-6-2.--max-warnings

指定 warn 警告的数量上限,当超过这个上限之后,eslint 在控制台会以错误状态退出,并可能伴随着以下类似提示:

ESLint found too many warnings (maximum: 1)

9-7.输出

9-7-1.-o, --output-file

将报告写入到指定文件内。

9-7-2.-f, --format

指定控制台的输出格式。

Eslint内置格式化一览

shell
yarn lint:command-line -o ./src/command-line/log.html --format=html

9-7-3.--color, --no-color

启用/禁用控制台上的颜色渲染。

9-8.行内配置注释

9-8-1.--no-inline-config

禁止内联注释配置。

设置之后,如 eslint-enableeslint-disable 等内联注释都会失效。

9-8-2.--report-unused-disable-directives

报告实际没有产生作用的内联注释配置。

主要的应用场景是这样:

譬如,在某次开发中,发现代码的一行需要 lint

为了快速和方便,直接添加了 //eslint-disable-line

但后续可能 eslint 版本升级修复了规则,或者其他开发成员在 rules 中关闭了规则。

那么这时就可以利用该命令行,进行检测代码中无用的配置,进而优化代码。

9-9.缓存

9-9-1.--cache

使用该命令时,默认会在当前工作目录下创建一个 .eslintcache 文件。

该文件会提高检测和 lint 执行效率。

9-9-2.--cache-location

也可以使用该命令行选项,指定在某一目录下创建 .eslintcache 文件,或者指定某一文件为 .eslintcache 文件(内容会被写入该文件内)。

9-9-3.--cache-strategy

该项用于指定检测文件是否变更的缓存策略。

可设定值有 metadatacontent

默认为 metadata,即文件修改时间等数据信息。

设定为 content 后,会根据文件内容是否变更,来判定文件是否变更。

9-10.杂项

9-10-1.--init

此项将基于当前目录运行 npm init @eslint/config 来启动配置并初始化项目。

npm init 有以下几种用法:

shell
npm init [--force|-f|--yes|-y|--scope]
npm init <@scope> (same as `npx <@scope>/create`)
npm init [<@scope>/]<name> (same as `npx [<@scope>/]create-<name>`)

因此,npm init @eslint/config 实际上相当于 npx @eslint/create-config

9-10-2.--env-info

此项输出关于执行环境的信息,包括 Nodenpm 的版本,以及 ESLint 的本地和全局安装。

ESLint 团队可能会要求提供这些信息以帮助解决 bug

可能有如下类似输出:

Environment Info:

Node version: v14.16.0
npm version: v6.14.11
Local ESLint version: v8.28.0 (Currently used)
Global ESLint version: Not found
Operating System: darwin 19.6.0

9-10-3.--debug

该选项将调试信息输出到控制台。

9-10-4.-h,--help

输出帮助菜单并显示所有可用选项。若此项存在,则忽略其他选项。

9-10-5.-v, --version

输出当前的 ESLint 版本至控制台。若此项存在,则忽略其他选项。

9-10-6.--print-config

输出用于传递的文件的配置。若此项存在,则将不会进行 lint 提示,并且仅与该选项相关的其他命令行选项才会生效

shell
npx eslint --print-config file.js

额外注意的一点:

shell
# --cache选项失效 而且不会进行lint检测
npx eslint --cache --print-config file.js

9-11.退出码

当对文件进行检查时,Eslint 将以下方任一代码退出:

  • 0: 检查通过,没有任何错误。若 --max-warnings 标志为 n,则最多允许有 n 个警告。
  • 1: 着色成功,但至少有一个错误或有超过 --max-warnings 项的警告数。
  • 2: 由于配置问题或内部错误,检查失败。