還是在看別人 github 上項目的時候,看到好多項目目錄下都會有個 .editorconfig 文件扁瓢,起初看里面內(nèi)容有個 md 的字符,還以為就 markdown 文件的配置來映胁,后來有一次在 Webstorm 里配置一個 tab 鍵占幾個空格時又發(fā)現(xiàn)了這個配置文件绽左,這次細(xì)細(xì)查詢了一番,感覺不起眼的 .editorconfig 還是頗有用處的履怯。
一回还、為什么要用 .editorconfig ?
在多人合作的項目中叹洲,每個人的開發(fā)習(xí)慣是不同的柠硕。以縮進(jìn)來說,有的人習(xí)慣使用 space 鍵來進(jìn)行縮進(jìn)运提,有的人喜歡用 tab 鍵蝗柔,有的人喜歡設(shè)置縮進(jìn)為 4 個空格,有的人喜歡設(shè)置為 2 個空格民泵。這樣產(chǎn)生的后果就是每個人修改后的代碼在格式上總是不統(tǒng)一的诫咱,那么提交到 git 上就會代碼風(fēng)格不一致,變得丑陋無比洪灯。
在此之前,我一直使用 Eslint 做代碼 lint,那么為什么還要使用 .editorconfig 呢签钩?細(xì)細(xì)想了下掏呼,應(yīng)該有兩個方面吧。
Eslint 確實包含 .editorconfig 中的一些屬性铅檩,如縮進(jìn)等憎夷,但并不全部包含,如 .editorconfig 中的
insert_final_newline
屬性 Eslint 就沒有昧旨。Eslint 更偏向于對語法的提示拾给,如定義了一個變量但是沒有使用時應(yīng)該給予提醒。而 .editorconfig 更偏向于代碼風(fēng)格兔沃,如縮進(jìn)等蒋得。Eslint 僅僅支持對 js 文件的校驗,而 .editorconfig 不光可以檢驗 js 文件的代碼風(fēng)格乒疏,還可以對 .py(python 文件)额衙、.md(markdown 文件)進(jìn)行代碼風(fēng)格控制。
總結(jié):根據(jù)項目需要怕吴,Eslint 和 .editorconfig 并不沖突窍侧,同時配合使用可以使代碼風(fēng)格更加優(yōu)雅。
二转绷、使用 .editorconfig
1. 示例 .editorconfig 文件
通用的 .editorconfig 配置文件一般如下所示:
# http://editorconfig.org
root = true
[*]
#縮進(jìn)風(fēng)格:空格
indent_style = space
#縮進(jìn)大小2
indent_size = 2
#換行符lf
end_of_line = lf
#字符集utf-8
charset = utf-8
#是否刪除行尾的空格
trim_trailing_whitespace = true
#是否在文件的最后插入一個空行
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
在上面配置文件中:
- 第一行
http://editorconfig.org
是 Editorconfig 的官方網(wǎng)站伟件; - 第二行
root = true
控制 .editorconfig 是否生效的字段; - 其它字段應(yīng)該注意的有
indent_size
和charset
议经,如果想要了解更多斧账,參閱:.editorconfig 配置文件字段詳解 。
測試是否可用:
在項目的 js 文件中使用 tab 鍵進(jìn)行縮進(jìn)爸业,分別修改 indent_size 屬性值為 2 和 4其骄,觀察是否有變化。如果沒有任何變化扯旷,說明還沒有安裝 Editorconfig 插件拯爽。
2. Editorconfig 插件
該插件的作用是告訴開發(fā)工具,如 Webstorm 自動去讀取項目根目錄下的 .editorconfig
配置文件钧忽,如果沒有安裝這個插件毯炮,光有一個配置文件是無法生效的。Webstorm 2017.1 版本之后都是自動安裝這個插件的耸黑。
如果你的 Webstorm 沒有安裝這個插件桃煎,參閱:Webstorm 安裝 Editorconfig 插件。