社區(qū)精選 |Vue項目之使用EditorConfig, Eslint和Prettier實現(xiàn)代碼規(guī)范
今天為各位小伙伴推薦的是社區(qū)作者 瑪爾斯通 的文章,在這篇文章中他介紹了如何在Vue項目中實現(xiàn)基本的代碼規(guī)范配置,讓我們一起來學(xué)習(xí)吧!
背景
每個人的代碼風(fēng)格不同,比如有的人代碼縮進(jìn)喜歡用Tab,有的人喜歡用Space;有的人代碼語句后會加上分號,有的人則不加。并且不同的人使用的開發(fā)工具也不同,有的人喜歡使用WebStorm,有的人喜歡用VSCode。。。
如果是一個人獨(dú)立開發(fā),這些當(dāng)然都沒啥問題,自己想怎么寫就怎么寫。代碼規(guī)范化之后可能也沒法立即看到帶來的好處。并且相反,可能在某些人看來反而是一種束縛。
但是如果是團(tuán)隊協(xié)同開發(fā),代碼規(guī)范化所帶來的好處就很明顯。比如,統(tǒng)一團(tuán)隊成員的代碼風(fēng)格,方便后期維護(hù),避免擾亂Git Diff等等。
針對以上這些問題,本文會介紹如何在Vue項目中實現(xiàn)基本的代碼規(guī)范配置。
思路
不同人可能會使用不同開發(fā)工具,不同開發(fā)工具有著不同的默認(rèn)配置,針對這個問題,這里我們采用開發(fā)工具配置工具EditorConfig去統(tǒng)一這些開發(fā)工具的默認(rèn)配置。
https://editorconfig.org/
有時候開發(fā)中難免會寫出一些語法錯誤等問題,比如使用了未聲明的變量,switch語句少寫了break等等,而這些問題要等到編譯或者運(yùn)行時才會被發(fā)現(xiàn)。針對這個問題,這里我們使用代碼檢查工具Eslint來檢查這些代碼問題,將這些問題提前暴露出來并修復(fù),而不是等到編譯或運(yùn)行時提示報錯才發(fā)現(xiàn)。
https://eslint.org/
此外,每個人的代碼風(fēng)格不同,比如有的人代碼縮進(jìn)喜歡用Tab,有的人喜歡用Space,有的人一行寬度設(shè)置了80個字符,有的人設(shè)置了120甚至更多等等,針對這個問題,這里我們使用代碼格式化工具Prettier來統(tǒng)一這些代碼風(fēng)格。
https://prettier.io/
實現(xiàn)
考慮到有的Vue項目是用Vue CLI搭建的,有的是用Webpack或其他工具搭建的,因此接下來我將用VSCode開發(fā)工具,根據(jù)不同的搭建工具分別實現(xiàn)代碼規(guī)范。
使用Vue CLI創(chuàng)建的Vue項目
給新項目添加代碼規(guī)范
當(dāng)我們使用vue create命令創(chuàng)建新項目時,命令行界面會詢問我們是否選擇 Linter / Formatter,這就是Vue CLI給我們提供的代碼規(guī)范工具,這里需要選上。


選擇Eslint + Prettier
選擇之后,命令行會接著詢問我們選擇哪一種Eslint配置。列表中都是比較流行的配置,可以根據(jù)自己的需要選擇。這里我們選擇Eslint + Prettier。

自動執(zhí)行l(wèi)int規(guī)則配置
接下來,命令行還會詢問何時自動執(zhí)行l(wèi)int,這里我們需要把兩個都選上,選上之后不管是保存文件,還是使用Git提交代碼,都會自動執(zhí)行l(wèi)int,并自動修復(fù)錯誤(提交代碼時)。

選擇獨(dú)立配置文件
最后,命令行還會詢問是否把這些配置放在各自獨(dú)立的文件中,還是全部放在package.json中,考慮到模塊的明確性和后期維護(hù),這里我們選擇In dedicated config files。

最后,等項目初始化完成后,我們使用開發(fā)工具打開項目,會發(fā)現(xiàn)項目的根目錄多了一個.eslintrc.js文件。

這就是Eslint配置文件,可以參考Eslint官方配置文檔了解更多。對了,開發(fā)工具還要安裝Eslint插件并配置好,這樣Eslint才會生效。
https://eslint.org/docs/latest/user-guide/configuring


配置Prettier
首先,我們需要在項目的根目錄新建文件.prettierrc.js,然后參考Prettier官方配置文檔,配置一些常用項,這里列出我經(jīng)常使用的配置,大家可以根據(jù)需要自行調(diào)整。
https://prettier.io/docs/en/options.html

// .prettierrc.js
module.exports = {
useTabs: false, // 關(guān)閉tab縮進(jìn),使用Space縮進(jìn)
tabWidth: 2, // 每次縮進(jìn)2個字符
semi: true, // 結(jié)尾加分號
singleQuote: true, // 使用單引號
jsxSingleQuote: true, // jsx中使用單引號
trailingComma: 'es5', // 結(jié)尾逗號使用es5規(guī)則
bracketSpacing: true, // 括號和參數(shù)之間有空格
jsxBracketSameLine: false, // 標(biāo)簽屬性較多時,標(biāo)簽箭頭>另起一行
arrowParens: 'always', // 箭頭函數(shù)參數(shù)永遠(yuǎn)加括號
quoteProps: 'as-needed', // 屬性加引號需要加時再加
printWidth: 80, // 每行字符個數(shù)
};
其次,我們還需要給開發(fā)工具做一些配置,讓開發(fā)工具識別我們剛剛添加的Prettier配置。
以VSCode開發(fā)工具為例,首先,我們需要去擴(kuò)展商店中查找并安裝Prettier插件

其次,我們還需要設(shè)置開發(fā)工具中的默認(rèn)格式化工具為Prettier

然后,選擇“配置默認(rèn)格式化程序“

然后,選擇Prettier,這樣開發(fā)工具就會使用Prettier作為默認(rèn)格式化工具。

最后,我們還需要勾選上開發(fā)工具中設(shè)置的Format On Save設(shè)置。這樣當(dāng)我們保存文件時,開發(fā)工具就會自動使用之前設(shè)置好的默認(rèn)格式化工具Prettier進(jìn)行格式化代碼,并且格式化后會自動保存文件。

配置好Prettier之后,我們可以以src/main.js文件為例,測試Prettier配置是否生效。
下圖是src/main.js文件默認(rèn)的狀態(tài),注意看文件中的雙引號。

當(dāng)我們使用快捷鍵cmd/ctrl+s保存文件后,會發(fā)現(xiàn)雙引號全部變成了單引號。這是因為我們在.prettierrc.js文件中配置了使用單引號規(guī)則singleQuote: true,這也證明了Prettier配置生效了。

EditorConfig配置
因為大多數(shù)開發(fā)工具都支持EditorConfig,因此配置起來很簡單。一般來說,只需要在項目的根目錄創(chuàng)建一個.editorconfig文件,然后添加常用配置項即可。這里我列出我經(jīng)常使用的配置,大家可以根據(jù)需要自行調(diào)整。
# 頂層配置文件,不會繼續(xù)向上層搜索配置文件
root = true
# 匹配任意格式文件
[*]
# 字符集
charset = utf-8
# 縮進(jìn)風(fēng)格
indent_style = space
# 縮進(jìn)值
indent_size = 2
# 換行符
end_of_line = lf
# 保存文件后文件末尾是否插入一行
insert_final_newline = true
# 刪除行尾空格
trim_trailing_whitespace = true
給已有的項目添加代碼規(guī)范
假設(shè)現(xiàn)在有一個Vue項目,并沒有配置Eslint, Prettier和EditorConfig,那我們該如何實現(xiàn)代碼規(guī)范呢?

安裝并配置Eslint
首先,我們可以根據(jù)Vue CLI官方文檔的推薦,使用vue add命令安裝Eslint插件:

這里我們使用的是vue add命令,而不是npm install命令。這是因為vue add命令會自動給我們安裝相關(guān)和依賴的插件,并配置好。而npm install只是安裝了指定的插件,依賴插件的安裝和配置還需要我們手動去實現(xiàn)。
安裝完成后,命令行會提示我們選擇哪一種Eslint配置:


這里我們選擇Prettier,并且把兩個自動lint規(guī)則都選上,這樣Vue CLI就會幫我們自動安裝Prettier插件并配置好。

配置Prettier和EditorConfig
已有項目中的Prettier和EditorConfig配置和前文在新項目中的配置是同樣的步驟,這里不再贅述。
使用Webpack等工具創(chuàng)建的Vue項目
假設(shè)我們現(xiàn)在有一個使用Webpack或其他工具創(chuàng)建的Vue項目,那我們就沒法享有Vue CLI帶給我們的便利。不過,實現(xiàn)的思路都是一樣的,實現(xiàn)起來也很簡單,下面以Webpack工具為例。

配置Eslint
參考Vue Eslint官方文檔,首先我們需要安裝Eslint插件
https://eslint.vuejs.org/user-guide/#installation

安裝好之后,新建文件.eslintrc.js,并添加常用配置項

然后確保開發(fā)工具中的Eslint正確配置:

最后我們可以檢驗下配置是否生效:

配置Prettier
Eslint和Prettier在有些規(guī)則上會有沖突,根據(jù)Prettier官方文檔提示,我們可以通過安裝eslint-config-prettier插件來解決。
https://prettier.io/docs/en/integrating-with-linters.html

安裝好之后,還需要修改下Eslint配置。

然后新建Prettier配置文件.prettierrc.js并配置好,最后設(shè)置Prettier為默認(rèn)格式化工具即可(參考前文,這里不再贅述)。

配置Webpack
根據(jù)Webpack官方文檔,如果想讓W(xué)ebpack集成Eslint,我們需要安裝eslint-webpack-plugin插件。
https://webpack.js.org/plugins/eslint-webpack-plugin/

安裝完成后,還需要配置下Webpack。
// webpack.config.dev.js
const ESLintPlugin = require('eslint-webpack-plugin');
module.exports = {
// ...
plugins: [
new ESLintPlugin({
extensions: ['js', 'vue'],
exclude: 'node_modules',
}),
],
// ...
};
最后重啟項目即可。如果代碼有問題,命令行就會顯示具體的Eslint報錯信息。

配置EditorConfig
EditorConfig配置和前文在新項目中的配置是同樣的步驟,這里不再贅述。
總結(jié)
本篇文章主要介紹了如何在Vue項目中實現(xiàn)代碼規(guī)范,主要使用了Eslint + Prettier + EditorConfig等工具。在非Vue項目中也可以參考著實現(xiàn),本質(zhì)上都是一樣的。
其實,代碼規(guī)范化不僅對團(tuán)隊協(xié)同開發(fā)有幫助,對于個人開發(fā),也有不少好處。最直觀的就是,可以促使我們養(yǎng)成良好的代碼習(xí)慣,而不是“隨意編碼”。這種好習(xí)慣有助于我們走得更好, 更遠(yuǎn)。
SegmentFault 思否社區(qū)小編說
自 2022-07-01 起 SegmentFault 思否公眾號改版啦!之后將陸續(xù)推出新的欄目和大家見面!(請拭目以待呀~?)
在「社區(qū)精選」欄目中,我們將為廣大開發(fā)者推薦來自 SegmentFault 思否開發(fā)者社區(qū)的優(yōu)質(zhì)技術(shù)文章,這些文章全部出自社區(qū)中充滿智慧的技術(shù)創(chuàng)作者哦!
希望通過這一欄目,大家可以共同學(xué)習(xí)技術(shù)干貨,GET 新技能和各種花式技術(shù)小 Tips。
歡迎越來越多的開發(fā)者加入創(chuàng)作者的行列,我們將持續(xù)甄選出社區(qū)中優(yōu)質(zhì)的內(nèi)容推介給更多人,讓閃閃發(fā)光的技術(shù)創(chuàng)作者們走到聚光燈下,被更多人認(rèn)識。
「社區(qū)精選」投稿郵箱:[email protected]
投稿請附上社區(qū)文章地址

