本节内容主要记录 Eslint 涉及到的各种命令行。
在前文中,应该已经了解到了 Eslint 检测文件的基础语法:
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
指定要加载的插件。
npx eslint --plugin jquery file.js
npx eslint --plugin eslint-plugin-mocha file.js9-2-2.--rule
指定规则。
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)来获得固定的内容。这里有该模式的示例:
yarn lint:command-line --no-eslintrc --stdin --fix-dry-run --format=js此标志适用于需要命令行进行自动修复却不保存到文件系统的集成(例如编辑器插件)。
9-3-3.--fix-type
指定在使用 --fix 或 --fix-dry-run 时指定的修复类型。
problem修复代码中的潜在错误suggestion改进代码layout修复不改变程序结构(AST)的问题directive修复内联指令,如 // eslint-disable。
9-4.忽略文件
9-4-1.--ignore-path
指定 .eslintignore 文件位置。
Eslint 默认从当前工作目录下寻找 .eslintignore 文件。
可以通过此命令行选项进行覆盖此默认情况。
9-4-2.--no-ignore
禁止根据 .eslintignore、--ignore-path、--ignore-pattern、ignorePatterns 属性排除文件。
9-4-3.--ignore-pattern
指定目标忽略文件的匹配格式。
使用方式基本雷同 .eslintignore 的匹配方式。
要注意的一点是如果要指定多种匹配格式的话:
# 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
# 相当于 在pipe流中运行eslint 然后将结果从标准化输入中读取
cat main.js | npx eslint --stdin更多的场景下,一般与 --fix-dry-run 联用(必须设置 --format,譬如可以将结果以 json 形式读取出来):
cat main.js | npx eslint --stdin --fix-dry-run --format=json9-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
指定控制台的输出格式。
yarn lint:command-line -o ./src/command-line/log.html --format=html9-7-3.--color, --no-color
启用/禁用控制台上的颜色渲染。
9-8.行内配置注释
9-8-1.--no-inline-config
禁止内联注释配置。
设置之后,如 eslint-enable 、eslint-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
该项用于指定检测文件是否变更的缓存策略。
可设定值有 metadata、content。
默认为 metadata,即文件修改时间等数据信息。
设定为 content 后,会根据文件内容是否变更,来判定文件是否变更。
9-10.杂项
9-10-1.--init
此项将基于当前目录运行 npm init @eslint/config 来启动配置并初始化项目。
npm init 有以下几种用法:
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
此项输出关于执行环境的信息,包括 Node、npm 的版本,以及 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.09-10-3.--debug
该选项将调试信息输出到控制台。
9-10-4.-h,--help
输出帮助菜单并显示所有可用选项。若此项存在,则忽略其他选项。
9-10-5.-v, --version
输出当前的 ESLint 版本至控制台。若此项存在,则忽略其他选项。
9-10-6.--print-config
输出用于传递的文件的配置。若此项存在,则将不会进行 lint 提示,并且仅与该选项相关的其他命令行选项才会生效。
npx eslint --print-config file.js额外注意的一点:
# --cache选项失效 而且不会进行lint检测
npx eslint --cache --print-config file.js9-11.退出码
当对文件进行检查时,Eslint 将以下方任一代码退出:
0: 检查通过,没有任何错误。若--max-warnings标志为n,则最多允许有n个警告。1: 着色成功,但至少有一个错误或有超过--max-warnings项的警告数。2: 由于配置问题或内部错误,检查失败。