參考:http://eslint.cn/docs/user-guide/command-line-interface
為了在 Node.js 上運(yùn)行 ESLint美侦,你必須先安裝 npm酥诽。如果還沒(méi)有安裝 npm 梯刚,按照這里的說(shuō)明進(jìn)行安裝:https://www.npmjs.com/拇涤。
一旦安裝了 npm联逻,運(yùn)行下面的命令
npm i -g eslint
這句命令從 npm 倉(cāng)庫(kù)安裝了 ESLint CLI茅主。使用以下格式運(yùn)行 ESLint:
eslint [options] [file|dir|glob]*
比如:
eslint file1.js file2.js //檢查file1.js file2.js
或者:
eslint lib/** //檢查lib下面的所有文件
請(qǐng)注意襟己,傳遞一個(gè) glob 模式作為參數(shù)時(shí)探赫,它將由你的 shell 進(jìn)行擴(kuò)展。擴(kuò)展的結(jié)果取決于你的 shell 及其配置嘱能。如果你想使用 node 的 glob
語(yǔ)法吝梅,你需要給參數(shù)加上引號(hào)(在 windows 系統(tǒng)運(yùn)行時(shí),如果你需要惹骂,也可以使用雙引號(hào) )苏携,像下面這樣:
eslint "lib/**"
Options
命令行工具有幾個(gè)選項(xiàng),你可以通過(guò)運(yùn)行 eslint -h
查看所有選項(xiàng)对粪。
eslint [options] file.js [file.js] [dir]
Basic configuration: //基本配置
--no-eslintrc Disable use of configuration from .eslintrc.* //禁止使用來(lái)自.eslintrc.*的配置文件
-c, --config path::String Use this configuration, overriding .eslintrc.* config options if present //如果存在.eslintrc.*右冻,則使用且重寫(xiě)該配置文件
--env [String] Specify environments //指定環(huán)境
--ext [String] Specify JavaScript file extensions - default: .js //指定的JS文件擴(kuò)展名,默認(rèn):.js
--global [String] Define global variables //定義全局變量
--parser String Specify the parser to be used //指定使用某種解析器
--parser-options Object Specify parser options //指定解析參數(shù)
Specifying rules and plugins: //指定規(guī)則和插件
--rulesdir [path::String] Use additional rules from this directory //從該路徑使用額外的規(guī)則
--plugin [String] Specify plugins //指定插件
--rule Object Specify rules//指定規(guī)則
Fixing problems://修正問(wèn)題
--fix Automatically fix problems//自動(dòng)修復(fù)問(wèn)題
--fix-dry-run Automatically fix problems without saving the changes to the file system//自動(dòng)修復(fù)問(wèn)題而不保存對(duì)文件系統(tǒng)的更改
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]標(biāo)準(zhǔn)輸入(設(shè)備)文件
--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 //僅以錯(cuò)誤報(bào)告出來(lái)
--max-warnings Int Number of warnings to trigger nonzero exit code - default: -1 //要觸發(fā)非零退出代碼的警告數(shù)-默認(rèn)值:-1
Output:
-o, --output-file path::String Specify file to write report to //指定輸出的文件路徑
-f, --format String Use a specific output format - default: stylish //使用特定的輸出格式-默認(rèn):stylish
--color, --no-color Force enabling/disabling of color
Inline configuration comments: //內(nèi)聯(lián)配置注釋
--no-inline-config Prevent comments from changing config or rules //阻止注釋更改配置或規(guī)則
--report-unused-disable-directives Adds reported errors for unused eslint-disable directives //為未使用的eslint disable指令添加報(bào)告的錯(cuò)誤
Caching:
--cache Only check changed files - default: false //僅僅檢查改變過(guò)的文件
--cache-file path::String Path to the cache file. Deprecated: use --cache-location - default: .eslintcache//緩存文件的路徑衩侥。已棄用:使用--緩存位置-默認(rèn)值:.eslintcache
--cache-location path::String Path to the cache file or directory//緩存文件或文件夾的路徑
Miscellaneous://其他
--init Run config initialization wizard - default: false //運(yùn)行配置初始化向?qū)?默認(rèn)值:false
--debug Output debugging information//輸出調(diào)試信息
-h, --help Show help
-v, --version Output the version number
--print-config path::String Print the configuration for the given file//打印給定文件的配置
這些選項(xiàng)可以通過(guò)重復(fù)該選項(xiàng)或使用逗號(hào)分隔的列表進(jìn)行指定(除了 --ignore-pattern
不允許第二種風(fēng)格)国旷。
示例:
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
該選項(xiàng)允許你為 ESLint (查看 Configuring ESLint 了解更多)指定一個(gè)額外的配置文件茫死。
示例:
eslint -c ~/my-eslint.json file.js
這個(gè)例子使用了 ~/my-eslint.json
作為配置文件。
它還接受 sharable config 的一個(gè)模塊的 ID履羞。
示例:
eslint -c myconfig file.js
這個(gè)例子直接使用可共享的配置 eslint-config-myconfig
峦萎。
如果 .eslintrc.*
和/或 package.json
文件也用于配置(比如,不指定 --no-eslintrc
)忆首,配置將被合并爱榔。此配置文件中的選項(xiàng)優(yōu)先于 .eslintrc.*
和 package.json
文件中的選項(xiàng)。
--env
這個(gè)選項(xiàng)用來(lái)指定環(huán)境糙及。關(guān)于每種環(huán)境中定義的全局變量的詳細(xì)信息請(qǐng)查看 configuration 文檔详幽。該選項(xiàng)只能啟用環(huán)境,不能禁用在其它配置文件中設(shè)置的環(huán)境浸锨。要指定多個(gè)環(huán)境的話(huà)唇聘,使用逗號(hào)分隔它們,或多次使用這個(gè)選項(xiàng)柱搜。
示例:
eslint --env browser,node file.js
eslint --env browser --env node file.js
--ext
這個(gè)選項(xiàng)允許你指定 ESLint 在指定的目錄下查找 JavaScript 文件時(shí)要使用的文件擴(kuò)展名迟郎。默認(rèn)情況下,它使用 .js
作為唯一性文件擴(kuò)展名聪蘸。
示例:
# 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
只有在參數(shù)為目錄時(shí)宪肖,才生效表制。如果你使用 glob 模式或文件名,--ext
將被忽略
例如控乾,eslint lib/* --ext .js
將匹配 lib/
下的所有文件么介,忽略擴(kuò)展名。
--global
這個(gè)選項(xiàng)定義了全局變量蜕衡,這樣它們就不會(huì)被 no-undef
規(guī)則標(biāo)記為未定義了夭拌。任何指定的全局變量默認(rèn)是只讀的,在變量名字后加上 :true
后會(huì)使它變?yōu)榭蓪?xiě)衷咽。要指定多個(gè)變量鸽扁,使用逗號(hào)分隔它們,或多次使用這個(gè)選項(xiàng)镶骗。
示例:
eslint --global require,exports:true file.js
eslint --global require --global exports:true
--parser
該選項(xiàng)允許你為 ESLint 指定一個(gè)解析器桶现。默認(rèn)情況下,使用 espree
鼎姊。
--parser-options
該選項(xiàng)允許你指定 ESLint 要使用的解析器選項(xiàng)骡和。注意,可用的解析器選項(xiàng)取決于你所選用的解析器相寇。
示例:
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
存儲(chǔ)處理過(guò)的文件的信息以便只對(duì)有改變的文件進(jìn)行操作慰于。緩存默認(rèn)被存儲(chǔ)在 .eslintcache
。啟用這個(gè)選項(xiàng)可以顯著改善 ESLint 的運(yùn)行時(shí)間唤衫,確保只對(duì)有改變的文件進(jìn)行檢測(cè)婆赠。
注意:如果你運(yùn)行 ESLint --cache
,然后又運(yùn)行 ESLint 不帶 --cache
佳励,.eslintcache
文件將被刪除休里。這是必要的,因?yàn)闄z測(cè)的結(jié)果可能會(huì)改變赃承,使 .eslintcache
無(wú)效妙黍。如果你想控制緩存文件何時(shí)被刪除,那么使用 --cache-location
來(lái)指定一個(gè)緩存文件的位置瞧剖。
--cache-file
緩存文件的路徑拭嫁。如果沒(méi)有指定,則使用 .eslintcache
抓于。這個(gè)文件會(huì)在 eslint
命令行被執(zhí)行的文件目錄中被創(chuàng)建做粤。 已棄用: 請(qǐng)使用 --cache-location
。
--cache-location
緩存文件的路徑毡咏⊥匝纾可以是一個(gè)文件或者一個(gè)目錄。如果沒(méi)有指定呕缭,則使用 .eslintcache
堵泽。這個(gè)文件會(huì)在 eslint
命令行被執(zhí)行的文件目錄中被創(chuàng)建修己。
如果指定一個(gè)目錄,緩存文件將在指定的文件夾下被創(chuàng)建迎罗。文件名將基于當(dāng)前工作目錄(CWD) 的 hash 值睬愤,比如:.cache_hashOfCWD
。
重要提示:如果不存在緩存文件的目錄纹安,請(qǐng)確保在尾部添加 /
(*nix 系統(tǒng))或 \
(windows 系統(tǒng))尤辱。否則該路徑將被假定為是一個(gè)文件。
示例:
eslint "src/**/*.js" --cache --cache-location "/Users/user/.eslintcache/"
Specifying rules and plugins
--rulesdir
這個(gè)選項(xiàng)允許你指定另一個(gè)加載規(guī)則文件的目錄厢岂。這允許你在運(yùn)行時(shí)動(dòng)態(tài)加載新規(guī)則光督。當(dāng)你有自定義規(guī)則,而且這些規(guī)則不適合綁定到 ESLint 時(shí)塔粒,這會(huì)很有用结借。
示例:
eslint --rulesdir my-rules/ file.js
為了使你自定義的規(guī)則目錄下的規(guī)則正常工作,必須遵照同綁定的規(guī)則一樣的格式卒茬。你也可以通過(guò)包含多個(gè) --rulesdir
選項(xiàng)來(lái)為自定義規(guī)則指定多個(gè)位置船老。
eslint --rulesdir my-rules/ --rulesdir my-other-rules/ file.js
注意,與核心規(guī)則和插件規(guī)則一樣圃酵,你仍需要在配置文件或通過(guò) --rule
命令行選項(xiàng)啟用這些規(guī)則柳畔,以便在檢測(cè)過(guò)程中實(shí)際運(yùn)行這些規(guī)則。使用 --rulesdir
指定一個(gè)規(guī)則目錄不會(huì)自動(dòng)啟用那些目錄下的規(guī)則郭赐。
--plugin
這個(gè)選項(xiàng)指定一個(gè)要加載的插件薪韩。你可以省略插件名的前綴 eslint-plugin-
。
在你使用插件之前堪置,你必須使用 npm 安裝它躬存。
示例:
eslint --plugin jquery file.js
eslint --plugin eslint-plugin-mocha file.js
--rule
這個(gè)選項(xiàng)指定要使用的規(guī)則张惹。這些規(guī)則將會(huì)與配制文件中指定的規(guī)則合并舀锨。(你可以使用 --no-eslintrc
改變這種行為。)要定義多個(gè)規(guī)則宛逗,使用逗號(hào)分隔它們坎匿,或多次使用這個(gè)選項(xiàng)。levn 格式被用來(lái)指定規(guī)則雷激。
如果這個(gè)規(guī)則定義在插件內(nèi)替蔬,你必須在規(guī)則 ID 前使用插件名和 /
,即 插件名/規(guī)則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
這個(gè)選項(xiàng)允許你指定一個(gè)文件作為 .eslintignore
承桥。默認(rèn)情況下,ESLint 在當(dāng)前工作目錄下查找 .eslintignore
根悼。你可以通過(guò)提供另一個(gè)文件的路徑改變這種行為凶异。
示例:
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
該選項(xiàng)允許你指定要忽略的文件模式(除了那些在 .eslintignore
的)剩彬。你可以重復(fù)該選項(xiàng)已提供多個(gè)模式酷麦。語(yǔ)法同 .eslintignore
文件中的相同。你應(yīng)該將你的模式用引號(hào)括起來(lái)喉恋,以避免命令行解析器的解析沃饶。
示例:
eslint --ignore-pattern '/lib/' --ignore-pattern '/src/vendor/*' .
Using stdin
--stdin
這個(gè)選項(xiàng)告訴 ESLint 從 STDIN 而不是從文件中讀取和檢測(cè)源碼。你可以使用該選項(xiàng)向 ESLint 來(lái)輸入代碼轻黑。
示例:
cat myfile.js | eslint --stdin
--stdin-filename
這個(gè)選項(xiàng)允許你指定一個(gè)文件名去處理 STDIN糊肤。當(dāng)你處理從 STDIN 來(lái)的文件和有規(guī)則依賴(lài)于這個(gè)文件名時(shí),這會(huì)很有用氓鄙。
示例:
cat myfile.js | eslint --stdin --stdin-filename=myfile.js
Handling warnings
--quiet
這個(gè)選項(xiàng)允許你禁止報(bào)告警告轩褐。如果開(kāi)啟這個(gè)選項(xiàng),ESLint 只會(huì)報(bào)告錯(cuò)誤玖详。
示例:
eslint --quiet file.js
--max-warnings
這個(gè)選項(xiàng)允許你指定一個(gè)警告的閾值把介,當(dāng)你的項(xiàng)目中有太多違反規(guī)則的警告時(shí),這個(gè)閾值被用來(lái)強(qiáng)制 ESLint 以錯(cuò)誤狀態(tài)退出蟋座。
通常情況下拗踢,如果 ESLint 運(yùn)行過(guò)程中,沒(méi)有出現(xiàn)錯(cuò)誤(只有警告)向臀,它將以成功的狀態(tài)退出巢墅。然而,如果指定了 --max-warnings
券膀,而且警告的總數(shù)超過(guò)了指定的閾值君纫,ESLint 將以錯(cuò)誤的狀態(tài)退出。通過(guò)指定一個(gè) -1
的閾值或省略這個(gè)選項(xiàng)將會(huì)避免這種行為芹彬。
示例:
eslint --max-warnings 10 file.js
Output
-o
, --output-file
將報(bào)告寫(xiě)到一個(gè)文件蓄髓。
示例:
eslint -o ./test/test.html
當(dāng)指定這個(gè)選項(xiàng)時(shí),就會(huì)按給定的格式輸出到指定的文件名舒帮。
-f
, --format
這個(gè)選項(xiàng)指定了控制臺(tái)的輸出格式会喝。可用的格式是:
- checkstyle
- codeframe
- compact
- html
- jslint-xml
- json
- junit
- stylish (默認(rèn))
- table
- tap
- unix
- visualstudio
示例:
eslint -f compact file.js
你也可以在命令行中通過(guò)指定一個(gè)自定義的格式的文件路徑來(lái)使用自定義的格式玩郊。
示例:
eslint -f ./customformat.js file.js
通過(guò) npm 安裝的格式化器可帶可不帶 eslint-formatter-
前綴肢执。
示例:
npm install eslint-formatter-pretty
eslint -f pretty file.js
// equivalent:
eslint -f eslint-formatter-pretty file.js
當(dāng)指定之后,給定的格式就輸出到控制臺(tái)译红。如果你想將輸出保存到一個(gè)文件预茄,你可以在命令行上這樣操作:
eslint -f compact file.js > results.txt
這會(huì)將輸出保存到 results.txt
文件。
--color
, --no-color
此選項(xiàng)強(qiáng)制啟用/禁用彩色輸出侦厚。你可以使用此方法來(lái)覆蓋默認(rèn)行為耻陕,即在未檢測(cè)到TTY的情況下啟用彩色輸出昵慌,例如通過(guò) cat
或 less
進(jìn)行管道輸出 eslint
。
示例:
eslint --color file.js | cat
eslint --no-color file.js
Miscellaneous
--init
這個(gè)選項(xiàng)將會(huì)配置初始化向?qū)Щ打凇K挥脕?lái)幫助新用戶(hù)快速地創(chuàng)建 .eslintrc
文件斋攀,用戶(hù)通過(guò)回答一些問(wèn)題,選擇一個(gè)流行的風(fēng)格指南梧田,或檢查你的源文件淳蔼,自動(dòng)生成一個(gè)合適的配置。
生成的配置文件將被創(chuàng)建在當(dāng)前目錄裁眯。
--fix
該選項(xiàng)指示 ESLint 試圖修復(fù)盡可能多的問(wèn)題鹉梨。修復(fù)只針對(duì)實(shí)際文件本身,而且剩下的未修復(fù)的問(wèn)題才會(huì)輸出穿稳。不是所有的問(wèn)題都能使用這個(gè)選項(xiàng)進(jìn)行修復(fù)存皂,該選項(xiàng)在以下情形中不起作用:
- 當(dāng)代碼傳遞給 ESLint 時(shí),這個(gè)選項(xiàng)拋出一個(gè)錯(cuò)誤逢艘。
- 這個(gè)選項(xiàng)對(duì)使用處理器的代碼不起作用旦袋。
- 該選項(xiàng)對(duì)使用處理器的代碼沒(méi)有影響,除非處理器選擇允許自動(dòng)修復(fù)它改。
如果你想從 stdin
修復(fù)代碼或希望在不實(shí)際寫(xiě)入到文件的情況下進(jìn)行修復(fù)疤孕,使用 --fix-dry-run
選項(xiàng)。
--fix-dry-run
該選項(xiàng)與 --fix
有相同的效果央拖,唯一一點(diǎn)不同是祭阀,修復(fù)不會(huì)保存到文件系統(tǒng)中。這也是從 stdin
(當(dāng)使用 --stdin
標(biāo)記時(shí))修復(fù)代碼成為可能鲜戒。
因?yàn)槟J(rèn)的格式化器不會(huì)輸出修復(fù)的代碼专控,你必須使用另外一個(gè)(比如 json
)進(jìn)行修復(fù)。下面是這個(gè)模式的一個(gè)例子:
getSomeText | eslint --stdin --fix-dry-run --format=json
該標(biāo)記對(duì)集成(比如遏餐,編輯器插件)很有用伦腐,它需要從命令行進(jìn)行自動(dòng)修復(fù),而不需要保存到文件系統(tǒng)境输。
--debug
這個(gè)選項(xiàng)將調(diào)試信息輸出到控制臺(tái)蔗牡。當(dāng)你看到一個(gè)問(wèn)題并且很難定位它時(shí),這些調(diào)試信息會(huì)很有用嗅剖。ESLint 團(tuán)隊(duì)可能會(huì)通過(guò)詢(xún)問(wèn)這些調(diào)試信息幫助你解決 bug。
-h
, --help
這個(gè)選項(xiàng)會(huì)輸出幫助菜單嘁扼,顯示所有可用的選項(xiàng)信粮。當(dāng)有這個(gè)選項(xiàng)時(shí),忽略其他所有選項(xiàng)趁啸。
-v
, --version
這個(gè)選項(xiàng)在控制臺(tái)輸出當(dāng)前 ESlint 的版本强缘。當(dāng)有這個(gè)標(biāo)記時(shí)督惰,忽略其他所有標(biāo)記。
--no-inline-config
這個(gè)選項(xiàng)會(huì)阻止像 /*eslint-disable*/
或者 /*global foo*/
這樣的內(nèi)聯(lián)注釋起作用旅掂。這允許你在不修改文件的情況下設(shè)置一個(gè) ESLint 配置赏胚。所有的內(nèi)聯(lián)注釋都會(huì)被忽略,比如:
/*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
當(dāng)像 // eslint-disable-line
這樣的指令注釋所在行沒(méi)有任何錯(cuò)誤報(bào)告時(shí)商虐,該選項(xiàng)會(huì)導(dǎo)致 ESLint 報(bào)告這樣的指令注釋觉阅。通過(guò)清理舊的不再適用 eslint-disable
注釋?zhuān)瑢?duì)防止將來(lái)意外的被抑制的錯(cuò)誤很有用。
警告:但使用此選項(xiàng)秘车,當(dāng)升級(jí) ESLint 或自定義規(guī)則時(shí)典勇,可能會(huì)出現(xiàn)新的錯(cuò)誤。例如叮趴,假如一個(gè)規(guī)則有 bug割笙,導(dǎo)致它報(bào)告一個(gè)錯(cuò)誤,而添加了 eslint-disable
注釋?zhuān)种屏隋e(cuò)誤報(bào)告眯亦。如果該 bug 在 ESLint 補(bǔ)丁發(fā)布中被修復(fù)伤溉,eslint-disable
將不再被使用,因?yàn)?ESLint 不再產(chǎn)生一個(gè)錯(cuò)誤報(bào)告妻率。這將導(dǎo)致如果使用了 report-unused-disable-directives
選項(xiàng)谈火,未使用的指令會(huì)報(bào)告一個(gè)新的錯(cuò)誤。
示例:
eslint --report-unused-disable-directives file.js
--print-config
這個(gè)選項(xiàng)輸出傳遞的文件使用的配置舌涨。當(dāng)有這個(gè)標(biāo)記時(shí)糯耍,不進(jìn)行檢測(cè),只有配置相關(guān)的選項(xiàng)才是有效的囊嘉。
示例:
eslint --print-config file.js
Ignoring files from linting
當(dāng) ESLint 作用于一個(gè)目錄時(shí)温技,ESLint 支持使用 .eslintignore
文件來(lái)避免檢測(cè)處理。通過(guò)特定的命令行參數(shù)指定的文件就可以免除被忽略扭粱。.eslintignore
文件是個(gè)純文本文件舵鳞,每一行都包含一種模式。它可以放在目標(biāo)目錄的任何父級(jí)目錄琢蛤;它將影響到它所在的當(dāng)前目錄和所有子目錄蜓堕。這里是 .eslintignore
文件的一個(gè)簡(jiǎn)單示例:
node_modules/*
**/vendor/*.js
ESLint 默認(rèn)忽略的模式分解和目錄的更多詳細(xì)信息可以在 Configuring ESLint 中找到。