参考:http://eslint.cn/docs/user-guide/command-line-interface
为了在 Node.js 上运行 ESLint,你必须先安装 npm。如果还没有安装 npm ,按照这里的说明进行安装:https://www.npmjs.com/。
一旦安装了 npm,运行下面的命令
npm i -g eslint
这句命令从 npm 仓库安装了 ESLint CLI。使用以下格式运行 ESLint:
eslint [options] [file|dir|glob]*
比如:
eslint file1.js file2.js //检查file1.js file2.js
或者:
eslint lib/** //检查lib下面的所有文件
请注意,传递一个 glob 模式作为参数时,它将由你的 shell 进行扩展。扩展的结果取决于你的 shell 及其配置。如果你想使用 node 的 glob
语法,你需要给参数加上引号(在 windows 系统运行时,如果你需要,也可以使用双引号 ),像下面这样:
eslint "lib/**"
Options
命令行工具有几个选项,你可以通过运行 eslint -h
查看所有选项。
eslint [options] file.js [file.js] [dir]
Basic configuration: //基本配置
--no-eslintrc Disable use of configuration from .eslintrc.* //禁止使用来自.eslintrc.*的配置文件
-c, --config path::String Use this configuration, overriding .eslintrc.* config options if present //如果存在.eslintrc.*,则使用且重写该配置文件
--env [String] Specify environments //指定环境
--ext [String] Specify JavaScript file extensions - default: .js //指定的JS文件扩展名,默认:.js
--global [String] Define global variables //定义全局变量
--parser String Specify the parser to be used //指定使用某种解析器
--parser-options Object Specify parser options //指定解析参数
Specifying rules and plugins: //指定规则和插件
--rulesdir [path::String] Use additional rules from this directory //从该路径使用额外的规则
--plugin [String] Specify plugins //指定插件
--rule Object Specify rules//指定规则
Fixing problems://修正问题
--fix Automatically fix problems//自动修复问题
--fix-dry-run Automatically fix problems without saving the changes to the file system//自动修复问题而不保存对文件系统的更改
Ignoring files: //忽略文件
--ignore-path path::String Specify path of ignore file //指定忽略的文件
--no-ignore Disable use of ignore files and patterns //禁止使用忽略文件和样式
--ignore-pattern [String] Pattern of files to ignore (in addition to those in .eslintignore) //要忽略的文件模式(除了在.eslintignore中的文件)
Using stdin: //unix]标准输入(设备)文件
--stdin Lint code provided on <STDIN> - default: false
--stdin-filename String Specify filename to process STDIN as //指定用于处理stdin的文件名
Handling warnings://处理警告
--quiet Report errors only - default: false //仅以错误报告出来
--max-warnings Int Number of warnings to trigger nonzero exit code - default: -1 //要触发非零退出代码的警告数-默认值:-1
Output:
-o, --output-file path::String Specify file to write report to //指定输出的文件路径
-f, --format String Use a specific output format - default: stylish //使用特定的输出格式-默认:stylish
--color, --no-color Force enabling/disabling of color
Inline configuration comments: //内联配置注释
--no-inline-config Prevent comments from changing config or rules //阻止注释更改配置或规则
--report-unused-disable-directives Adds reported errors for unused eslint-disable directives //为未使用的eslint disable指令添加报告的错误
Caching:
--cache Only check changed files - default: false //仅仅检查改变过的文件
--cache-file path::String Path to the cache file. Deprecated: use --cache-location - default: .eslintcache//缓存文件的路径。已弃用:使用--缓存位置-默认值:.eslintcache
--cache-location path::String Path to the cache file or directory//缓存文件或文件夹的路径
Miscellaneous://其他
--init Run config initialization wizard - default: false //运行配置初始化向导-默认值:false
--debug Output debugging information//输出调试信息
-h, --help Show help
-v, --version Output the version number
--print-config path::String Print the configuration for the given file//打印给定文件的配置
这些选项可以通过重复该选项或使用逗号分隔的列表进行指定(除了 --ignore-pattern
不允许第二种风格)。
示例:
eslint --ext .jsx --ext .js lib/
eslint --ext .jsx,.js lib/
Basic configuration
--no-eslintrc
禁用 .eslintrc.*
和 package.json
文件中的配置。
示例:
eslint --no-eslintrc file.js
-c
, --config
该选项允许你为 ESLint (查看 Configuring ESLint 了解更多)指定一个额外的配置文件。
示例:
eslint -c ~/my-eslint.json file.js
这个例子使用了 ~/my-eslint.json
作为配置文件。
它还接受 sharable config 的一个模块的 ID。
示例:
eslint -c myconfig file.js
这个例子直接使用可共享的配置 eslint-config-myconfig
。
如果 .eslintrc.*
和/或 package.json
文件也用于配置(比如,不指定 --no-eslintrc
),配置将被合并。此配置文件中的选项优先于 .eslintrc.*
和 package.json
文件中的选项。
--env
这个选项用来指定环境。关于每种环境中定义的全局变量的详细信息请查看 configuration 文档。该选项只能启用环境,不能禁用在其它配置文件中设置的环境。要指定多个环境的话,使用逗号分隔它们,或多次使用这个选项。
示例:
eslint --env browser,node file.js
eslint --env browser --env node file.js
--ext
这个选项允许你指定 ESLint 在指定的目录下查找 JavaScript 文件时要使用的文件扩展名。默认情况下,它使用 .js
作为唯一性文件扩展名。
示例:
# Use only .js2 extension
eslint . --ext .js2
# Use both .js and .js2
eslint . --ext .js --ext .js2
# Also use both .js and .js2
eslint . --ext .js,.js2
注意:--ext
只有在参数为目录时,才生效。如果你使用 glob 模式或文件名,--ext
将被忽略
例如,eslint lib/* --ext .js
将匹配 lib/
下的所有文件,忽略扩展名。
--global
这个选项定义了全局变量,这样它们就不会被 no-undef
规则标记为未定义了。任何指定的全局变量默认是只读的,在变量名字后加上 :true
后会使它变为可写。要指定多个变量,使用逗号分隔它们,或多次使用这个选项。
示例:
eslint --global require,exports:true file.js
eslint --global require --global exports:true
--parser
该选项允许你为 ESLint 指定一个解析器。默认情况下,使用 espree
。
--parser-options
该选项允许你指定 ESLint 要使用的解析器选项。注意,可用的解析器选项取决于你所选用的解析器。
示例:
echo '3 ** 4' | eslint --stdin --parser-options=ecmaVersion:6 # will fail with a parsing error
echo '3 ** 4' | eslint --stdin --parser-options=ecmaVersion:7 # succeeds, yay!
Caching
--cache
存储处理过的文件的信息以便只对有改变的文件进行操作。缓存默认被存储在 .eslintcache
。启用这个选项可以显著改善 ESLint 的运行时间,确保只对有改变的文件进行检测。
注意:如果你运行 ESLint --cache
,然后又运行 ESLint 不带 --cache
,.eslintcache
文件将被删除。这是必要的,因为检测的结果可能会改变,使 .eslintcache
无效。如果你想控制缓存文件何时被删除,那么使用 --cache-location
来指定一个缓存文件的位置。
--cache-file
缓存文件的路径。如果没有指定,则使用 .eslintcache
。这个文件会在 eslint
命令行被执行的文件目录中被创建。 已弃用: 请使用 --cache-location
。
--cache-location
缓存文件的路径。可以是一个文件或者一个目录。如果没有指定,则使用 .eslintcache
。这个文件会在 eslint
命令行被执行的文件目录中被创建。
如果指定一个目录,缓存文件将在指定的文件夹下被创建。文件名将基于当前工作目录(CWD) 的 hash 值,比如:.cache_hashOfCWD
。
重要提示:如果不存在缓存文件的目录,请确保在尾部添加 /
(*nix 系统)或 \
(windows 系统)。否则该路径将被假定为是一个文件。
示例:
eslint "src/**/*.js" --cache --cache-location "/Users/user/.eslintcache/"
Specifying rules and plugins
--rulesdir
这个选项允许你指定另一个加载规则文件的目录。这允许你在运行时动态加载新规则。当你有自定义规则,而且这些规则不适合绑定到 ESLint 时,这会很有用。
示例:
eslint --rulesdir my-rules/ file.js
为了使你自定义的规则目录下的规则正常工作,必须遵照同绑定的规则一样的格式。你也可以通过包含多个 --rulesdir
选项来为自定义规则指定多个位置。
eslint --rulesdir my-rules/ --rulesdir my-other-rules/ file.js
注意,与核心规则和插件规则一样,你仍需要在配置文件或通过 --rule
命令行选项启用这些规则,以便在检测过程中实际运行这些规则。使用 --rulesdir
指定一个规则目录不会自动启用那些目录下的规则。
--plugin
这个选项指定一个要加载的插件。你可以省略插件名的前缀 eslint-plugin-
。
在你使用插件之前,你必须使用 npm 安装它。
示例:
eslint --plugin jquery file.js
eslint --plugin eslint-plugin-mocha file.js
--rule
这个选项指定要使用的规则。这些规则将会与配制文件中指定的规则合并。(你可以使用 --no-eslintrc
改变这种行为。)要定义多个规则,使用逗号分隔它们,或多次使用这个选项。levn 格式被用来指定规则。
如果这个规则定义在插件内,你必须在规则 ID 前使用插件名和 /
,即 插件名/规则ID
。
示例:
eslint --rule 'quotes: [2, double]'
eslint --rule 'guard-for-in: 2' --rule 'brace-style: [2, 1tbs]'
eslint --rule 'jquery/dollar-sign: 2'
Ignoring files
--ignore-path
这个选项允许你指定一个文件作为 .eslintignore
。默认情况下,ESLint 在当前工作目录下查找 .eslintignore
。你可以通过提供另一个文件的路径改变这种行为。
示例:
eslint --ignore-path tmp/.eslintignore file.js
eslint --ignore-path .gitignore file.js
--no-ignore
禁止排除 .eslintignore
、--ignore-path
和 --ignore-pattern
文件中指定的文件。
示例:
eslint --no-ignore file.js
--ignore-pattern
该选项允许你指定要忽略的文件模式(除了那些在 .eslintignore
的)。你可以重复该选项已提供多个模式。语法同 .eslintignore
文件中的相同。你应该将你的模式用引号括起来,以避免命令行解析器的解析。
示例:
eslint --ignore-pattern '/lib/' --ignore-pattern '/src/vendor/*' .
Using stdin
--stdin
这个选项告诉 ESLint 从 STDIN 而不是从文件中读取和检测源码。你可以使用该选项向 ESLint 来输入代码。
示例:
cat myfile.js | eslint --stdin
--stdin-filename
这个选项允许你指定一个文件名去处理 STDIN。当你处理从 STDIN 来的文件和有规则依赖于这个文件名时,这会很有用。
示例:
cat myfile.js | eslint --stdin --stdin-filename=myfile.js
Handling warnings
--quiet
这个选项允许你禁止报告警告。如果开启这个选项,ESLint 只会报告错误。
示例:
eslint --quiet file.js
--max-warnings
这个选项允许你指定一个警告的阈值,当你的项目中有太多违反规则的警告时,这个阈值被用来强制 ESLint 以错误状态退出。
通常情况下,如果 ESLint 运行过程中,没有出现错误(只有警告),它将以成功的状态退出。然而,如果指定了 --max-warnings
,而且警告的总数超过了指定的阈值,ESLint 将以错误的状态退出。通过指定一个 -1
的阈值或省略这个选项将会避免这种行为。
示例:
eslint --max-warnings 10 file.js
Output
-o
, --output-file
将报告写到一个文件。
示例:
eslint -o ./test/test.html
当指定这个选项时,就会按给定的格式输出到指定的文件名。
-f
, --format
这个选项指定了控制台的输出格式。可用的格式是:
示例:
eslint -f compact file.js
你也可以在命令行中通过指定一个自定义的格式的文件路径来使用自定义的格式。
示例:
eslint -f ./customformat.js file.js
通过 npm 安装的格式化器可带可不带 eslint-formatter-
前缀。
示例:
npm install eslint-formatter-pretty
eslint -f pretty file.js
// equivalent:
eslint -f eslint-formatter-pretty file.js
当指定之后,给定的格式就输出到控制台。如果你想将输出保存到一个文件,你可以在命令行上这样操作:
eslint -f compact file.js > results.txt
这会将输出保存到 results.txt
文件。
--color
, --no-color
此选项强制启用/禁用彩色输出。你可以使用此方法来覆盖默认行为,即在未检测到TTY的情况下启用彩色输出,例如通过 cat
或 less
进行管道输出 eslint
。
示例:
eslint --color file.js | cat
eslint --no-color file.js
Miscellaneous
--init
这个选项将会配置初始化向导。它被用来帮助新用户快速地创建 .eslintrc
文件,用户通过回答一些问题,选择一个流行的风格指南,或检查你的源文件,自动生成一个合适的配置。
生成的配置文件将被创建在当前目录。
--fix
该选项指示 ESLint 试图修复尽可能多的问题。修复只针对实际文件本身,而且剩下的未修复的问题才会输出。不是所有的问题都能使用这个选项进行修复,该选项在以下情形中不起作用:
- 当代码传递给 ESLint 时,这个选项抛出一个错误。
- 这个选项对使用处理器的代码不起作用。
- 该选项对使用处理器的代码没有影响,除非处理器选择允许自动修复。
如果你想从 stdin
修复代码或希望在不实际写入到文件的情况下进行修复,使用 --fix-dry-run
选项。
--fix-dry-run
该选项与 --fix
有相同的效果,唯一一点不同是,修复不会保存到文件系统中。这也是从 stdin
(当使用 --stdin
标记时)修复代码成为可能。
因为默认的格式化器不会输出修复的代码,你必须使用另外一个(比如 json
)进行修复。下面是这个模式的一个例子:
getSomeText | eslint --stdin --fix-dry-run --format=json
该标记对集成(比如,编辑器插件)很有用,它需要从命令行进行自动修复,而不需要保存到文件系统。
--debug
这个选项将调试信息输出到控制台。当你看到一个问题并且很难定位它时,这些调试信息会很有用。ESLint 团队可能会通过询问这些调试信息帮助你解决 bug。
-h
, --help
这个选项会输出帮助菜单,显示所有可用的选项。当有这个选项时,忽略其他所有选项。
-v
, --version
这个选项在控制台输出当前 ESlint 的版本。当有这个标记时,忽略其他所有标记。
--no-inline-config
这个选项会阻止像 /*eslint-disable*/
或者 /*global foo*/
这样的内联注释起作用。这允许你在不修改文件的情况下设置一个 ESLint 配置。所有的内联注释都会被忽略,比如:
/*eslint-disable*/
/*eslint-enable*/
/*global*/
/*eslint*/
/*eslint-env*/
// eslint-disable-line
// eslint-disable-next-line
示例:
eslint --no-inline-config file.js
--report-unused-disable-directives
当像 // eslint-disable-line
这样的指令注释所在行没有任何错误报告时,该选项会导致 ESLint 报告这样的指令注释。通过清理旧的不再适用 eslint-disable
注释,对防止将来意外的被抑制的错误很有用。
警告:但使用此选项,当升级 ESLint 或自定义规则时,可能会出现新的错误。例如,假如一个规则有 bug,导致它报告一个错误,而添加了 eslint-disable
注释,抑制了错误报告。如果该 bug 在 ESLint 补丁发布中被修复,eslint-disable
将不再被使用,因为 ESLint 不再产生一个错误报告。这将导致如果使用了 report-unused-disable-directives
选项,未使用的指令会报告一个新的错误。
示例:
eslint --report-unused-disable-directives file.js
--print-config
这个选项输出传递的文件使用的配置。当有这个标记时,不进行检测,只有配置相关的选项才是有效的。
示例:
eslint --print-config file.js
Ignoring files from linting
当 ESLint 作用于一个目录时,ESLint 支持使用 .eslintignore
文件来避免检测处理。通过特定的命令行参数指定的文件就可以免除被忽略。.eslintignore
文件是个纯文本文件,每一行都包含一种模式。它可以放在目标目录的任何父级目录;它将影响到它所在的当前目录和所有子目录。这里是 .eslintignore
文件的一个简单示例:
node_modules/*
**/vendor/*.js
ESLint 默认忽略的模式分解和目录的更多详细信息可以在 Configuring ESLint 中找到。