- 前端跨界開發指南:JavaScript工具庫原理解析與實戰
- 史文強
- 1192字
- 2022-08-12 16:06:20
3.2 用editorconfig配置IDE
本節先來了解editorconfig這種相對古老的工具。
editorconfig不是一個軟件,而是一個名為“.editorconfig”的自定義文件,它可以用來定義項目的編碼規范,編輯器的行為會與“.editorconfig”文件中的定義保持一致。其優先級比編輯器自身的設置還要高,而且支持各種IDE,這一點在多人合作開發項目中非常重要。你可以在官方網站[1]上下載自己喜歡的編輯器插件,當你打開一個文件時,editorconfig插件就會在打開文件的目錄和每一級的父目錄中查找名為“.editorconfig”的文件,直到某個配置文件中設置了“root=true”。通常,我們只會在項目文件夾的根路徑下放置一份規則文件。如果沒有找到,就遵循編輯器自身的規定。當然,如果團隊成員所用的編輯器不一樣,則很有可能會造成代碼格式的差異性。
拓展知識
在Linux中,我們可以直接使用touch命令生成一個“.editorconfig”文件,但是Windows操作系統是不支持這樣寫的,同時也不支持在重命名時使用以點號開頭的名稱。我們可以使用支持Shell的命令行工具來執行touch命令(例如cmder),或者將文件命名為“.editorconfig.”(前后各有一個點),這樣系統就會自動將其保存為“.editorconfig”文件,然后用編輯器打開即可對其內容進行編輯。當然在大多數IDE中,也可以直接創建這種命名風格的新文件。
3.2.1 基本語法及屬性
editorconfig配置文件需要使用UTF-8字符集進行編碼,以回車符或換行符作為一行的分隔符,以斜線(/)作為路徑分隔符,基本語法如下。
- #:表示注釋。
- *:匹配除斜線(/)之外的任意字符。
- **:匹配任意字符串。
- ?:匹配任意單個字符。
- [name]:匹配name字符串。
- [!name]:匹配非name字符串。
- {S1,S2,S3}:匹配任意給定的字符串。
editorconfig支持的屬性及其說明具體如下。
- root:表明是最頂層的配置文件,設置為true時,會停止繼續向上查找。
- indent_style:設置縮進風格為制表符縮進或空格縮進。
- indent_size:縮進寬度,即列數。如果indent_style為tab(制表符縮進),則默認等于tab_width。
- tab_width:設置tab的列數。默認為indent_size。
- end_of_line:換行符,lf、cr或crlf。
- charset:編碼格式,支持Latin1、UTF-8等。
- trim_trailing_whitespace:設置為true時,會除去換行行首的空白字符,對“.md”格式有明顯作用。
- insert_final_newline:設置為true時,表明文件以一個空白行結尾。
3.2.2 配置實例
下面先看一個最基本的例子,示例代碼如下:
# 根據 editorconfig配置 root = true # 使用Unix風格的換行符標記換行,并自動在每個文件末插入一個空行 [*] end_of_line = lf insert_final_newline = true # 匹配多種指定格式的文件 # 設置默認字符集 [*.{js,html,css}] charset = utf-8 # 設置縮進格式 [*.js] indent_style = space indent_size = 4
上述配置實例非常簡單,不需要多做解釋。也許有讀者會覺得editorconfig所做的事情微不足道,甚至好像沒什么用,這很有可能是因為你還沒有接觸過適配不同的操作系統或者對整個文件進行字符串解析之類的任務。在“需要區分文件中的每一個字符到底代表什么”的開發任務中,統一的字符使用風格會帶來極大的便利,這樣就不用擔心新老程序員對于縮進風格的偏好不同,或者源代碼沒有經過構建,或者因為沒有運行某個自動化腳本而錯過了自動糾正的環節等會造成文件風格不一致的問題。無論團隊成員使用的是哪一款編輯器,我們幾乎都可以利用這樣一份配置文件,使得指定文件夾中的文件滿足最基本的風格規范。
[1]editorconfig官網地址:https://editorconfig.org/。
- C++程序設計教程
- Google Flutter Mobile Development Quick Start Guide
- LabVIEW 2018 虛擬儀器程序設計
- Neo4j Essentials
- Python神經網絡項目實戰
- aelf區塊鏈應用架構指南
- 快速念咒:MySQL入門指南與進階實戰
- Python Data Analysis Cookbook
- Python機器學習算法: 原理、實現與案例
- HTML5+CSS3 Web前端開發技術(第2版)
- ArcGIS for Desktop Cookbook
- Python:Deeper Insights into Machine Learning
- ExtJS Web應用程序開發指南第2版
- 3ds Max印象 電視欄目包裝動畫與特效制作
- Android Studio Cookbook