本节内容主要记录 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.js
9-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=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
指定控制台的输出格式。
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-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.0
9-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.js
9-11.退出码
当对文件进行检查时,Eslint
将以下方任一代码退出:
0
: 检查通过,没有任何错误。若--max-warnings
标志为n
,则最多允许有n
个警告。1
: 着色成功,但至少有一个错误或有超过--max-warnings
项的警告数。2
: 由于配置问题或内部错误,检查失败。