1、介紹
官網(wǎng)是這么介紹EditorConfig的台囱,“EditorConfig幫助開發(fā)人員在不同的編輯器和IDE之間定義和維護一致的編碼樣式。EditorConfig項目由用于定義編碼樣式的文件格式和一組文本編輯器插件組成读整,這些插件使編輯器能夠讀取文件格式并遵循定義的樣式簿训。EditorConfig文件易于閱讀,并且與版本控制系統(tǒng)配合使用米间∏科罚”
不同的開發(fā)人員,不同的編輯器屈糊,有不同的編碼風(fēng)格的榛,而EditorConfig就是用來協(xié)同團隊開發(fā)人員之間的代碼的風(fēng)格及樣式規(guī)范化的一個工具,而.editorconfig正是它的默認配置文件逻锐。
使用 Eslint 做代碼 lint夫晌,那么為什么還要使用 .editorconfig 呢?
- Eslint 確實包含 .editorconfig 中的一些屬性昧诱,如縮進等慷丽,但并不全部包含,如 .editorconfig 中的 insert_final_newline 屬性 Eslint 就沒有鳄哭。Eslint 更偏向于對語法的提示要糊,如定義了一個變量但是沒有使用時應(yīng)該給予提醒。而 .editorconfig 更偏向于代碼風(fēng)格,如縮進等锄俄。
- Eslint 僅僅支持對 js 文件的校驗局劲,而 .editorconfig 不光可以檢驗 js 文件的代碼風(fēng)格,還可以對 .py(python 文件)奶赠、.md(markdown 文件)進行代碼風(fēng)格控制鱼填。
總結(jié):根據(jù)項目需要,Eslint 和 .editorconfig 并不沖突毅戈,同時配合使用可以使代碼風(fēng)格更加優(yōu)雅苹丸。
2、示例
# 控制 .editorconfig 是否生效的字段
root = true
# 匹配全部文件
[*]
# 結(jié)尾換行符苇经,可選"lf"赘理、"cr"、"crlf"
end_of_line = lf
# 在文件結(jié)尾插入新行
insert_final_newline = true
# 刪除一行中的前后空格
trim_trailing_whitespace = true
# 匹配js和py結(jié)尾的文件
[*.{js,py}]
# 設(shè)置字符集
charset = utf-8
# 匹配py結(jié)尾的文件
[*.py]
# 縮進風(fēng)格扇单,可選"space"商模、"tab"
indent_style = space
# 縮進的空格數(shù)
indent_size = 4
[*.md]
trim_trailing_whitespace = false
# 以下匹配,類同
[Makefile]
indent_style = tab# tab的寬度tab_width = 4
# 以下匹配蜘澜,類同
[lib/**.js]
indent_style = space
indent_size = 2
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2
其它字段應(yīng)該注意的有 indent_size
和 charset
施流,如果想要了解更多,參閱:.editorconfig 配置文件字段詳解 鄙信。
3瞪醋、文件語法
editorConfig配置文件需要是UTF-8字符集編碼的, 以回車換行或換行作為一行的分隔符。
斜線(/)被用作為一個路徑分隔符装诡,井號(#)或分號(;)被用作于注釋. 注釋需要與注釋符號寫在同一行银受。
【通配符】
* 匹配除/之外的任意字符串
** 匹配任意字符串
? 匹配任意單個字符
[name] 匹配name中的任意一個單一字符
[!name] 匹配不存在name中的任意一個單一字符
{s1,s2,s3} 匹配給定的字符串中的任意一個(用逗號分隔)
{num1..num2} 匹配num1到num2之間的任意一個整數(shù), 這里的num1和num2可以為正整數(shù)也可以為負整數(shù)
【屬性】
所有的屬性和值都是忽略大小寫的. 解析時它們都是小寫的
indent_style 設(shè)置縮進風(fēng)格(tab是硬縮進,space為軟縮進)
indent_size 用一個整數(shù)定義的列數(shù)來設(shè)置縮進的寬度慎王,如果indent_style為tab蚓土,則此屬性默認為tab_width
tab_width 用一個整數(shù)來設(shè)置tab縮進的列數(shù)。默認是indent_size
end_of_line 設(shè)置換行符赖淤,值為lf蜀漆、cr和crlf
charset 設(shè)置編碼,值為latin1咱旱、utf-8确丢、utf-8-bom、utf-16be和utf-16le吐限,不建議使用utf-8-bom
trim_trailing_whitespace 設(shè)為true表示會去除換行行首的任意空白字符鲜侥。
insert_final_newline 設(shè)為true表示使文件以一個空白行結(jié)尾
root 表示是最頂層的配置文件,發(fā)現(xiàn)設(shè)為true時诸典,才會停止查找.editorconfig文件
4描函、注意事項、配置說明
1、如果是windows用戶舀寓,如果無法創(chuàng)建.editorconfig文件胆数,則需要先創(chuàng)建.editorconfig.文件,系統(tǒng)會自動重命名成.editorconfig文件互墓。
2必尼、EditorConfig的匹配規(guī)則是從上往下,即先定義的規(guī)則優(yōu)先級比后定義的優(yōu)先級要高篡撵。
3判莉、插件安裝,在GitHub上已經(jīng)有了各種流行編輯器的插件源代碼育谬,可根據(jù)說明安裝券盅。
4、對于VS Core斑司,對應(yīng)的插件名是EditorConfig for VS Code渗饮。
5但汞、這里列舉了VS Code支持的規(guī)則:
indent_style
indent_size
tab_width
end_of_line
insert_final_newline
trim_trailing_whitespace