更新版,以前的版本能夠看這裏: 梳理前端開發使用eslint和prettier來檢查和格式化代碼問題
可是須要知道的是,開發規範不只僅包含代碼格式規範,還有不少內容,這裏只是單獨說明代碼格式化規範而已。
代碼格式規範的標準能夠參考各大主流公司和社區,如下都是一些經常使用主流規範:javascript
參考別人的規範,制定適合本身團隊使用的規範,太過複雜的規範執行起來太麻煩,太過簡單的規範不如沒有規範。沒有絕對的規範,只有適合的規範!css
prettier 主要是爲了格式化代碼,而在沒有 prettier 以前,是用 eslint —fix
和 編輯器自帶代碼格式來進行代碼格式化的。html
因此二者是須要配合使用的。
舊有的解決辦法是:前端
eslint —fix
來修復不符合 eslint 規則的代碼,它會自動根據設置的規則來改變代碼(它會包含代碼樣式的規則,可是 eslint 的樣式規則並不太準確)。新的解決辦法是:vue
eslint —fix
的增強版,用 prettier 來代替 eslint-fix
)咋一看,其實沒啥區別,甚至可能發現新解決辦法會更加麻煩了一些,其實步驟上確實如此,可是真正操做上,會減輕 eslint 的規則編寫,也會減小不少手動修改樣式的地方,格式化後的代碼會更加美觀,耐看。
鑑於網上文章說明的比較混亂,這裏主要是爲了梳理整個流程和思路。
這裏多了一步是安裝 eslint 和 prettier ( ide 編輯器的插件),主要就是利用 ide 編輯器作代碼格式錯誤提醒和代碼格式處理,這個操做也可使用 webpack 打包的時候來作,也可使用 gulp 或者 npm 來作,但這裏藉助編輯器會更方便。
開發工具能夠作不少東西,是開發代碼的利器,可是不一樣的開發工具會有不一樣的代碼提示,代碼格式化,代碼檢查的機制,這樣的差別化會對團隊代碼規範(開發和檢查)帶來不少問題,因此須要統一。java
固然,若是我的不肯意更換本身用慣的開發工具的話,也不要緊,只要可以作到跟團隊的開發規範保持一致也是能夠的,但我的以爲,這樣難度比較大,畢竟開發工具和團隊的開發規範不那麼容易融合。
這裏只說明前端業界目前最經常使用的開發工具來作例子 webstorm 。node
安裝這個模塊的意義在於,實際上,整個流程最核心就是這個地方,開發工具雖然支持了這2個模塊,可是最終運行是必需要以這2個模塊安裝好才能使用的。webpack
// 這裏須要全局安裝最主要的兩個node 模塊,主要是要讓 ide 編輯器可以讀取全局環境來調用這2個模塊 npm install eslint prettier -g --save-dev // 這個是爲了 eslint 跟 prettier 能夠聯合使用 npm install --save-dev eslint-plugin-prettier // 這個是爲了讓 eslint 跟 prettier 兼容,關閉 prettier 跟 eslint 衝突的rules npm install --save-dev eslint-config-prettier
補充備註:git
eslint-config-prettier :github
模塊參考信息: Integrating with ESLint · Prettier
如下順便說一下其餘咱們經常使用到的eslint 模塊:
nam -g install babel-eslint eslint-plugin-html --save-dev
babel-eslint :
eslint-plugin-html:
.vue
文件的代碼。更多配置方式參考:WebStorm Setup · Prettier
根據官方介紹webstorm 分別有2種處理:
若是用IntelliJ IDEA, PhpStorm, PyCharm, and other JetBrains IDEs, 則須要安裝prettier插件和 eslint 插件,而webstorm 的話默認會幫你安裝上,這也是推薦 webstorm 的緣由。
官方默認已經集成了 prettier 支持,只須要配置好一個全局的 prettier 模塊調用方式就可使用了(必須配置)。
快捷鍵是:Alt-Shift-Cmd-P on macOS or Alt-Shift-Ctrl-P on Windows and Linux
氪金王的好處,升級快,支持快,免破解,省心省力不省錢!
這個版本有2種狀況:
eslint-plugin-prettier
插件和啓用eslint 插件配合,這裏至關於使用 eslint 模塊來驅動 prettier 模塊,而後中間驅動則是靠eslint-plugin-prettier
。首先啓用 eslint,而且配置 eslint 模塊位置,默認會自動讀取當前目錄的 eslint.rc
配置文件,而後須要進行 npm 安裝eslint-plugin-prettier
這個插件,後面再統一說明。
上面兩種方式的默認快捷鍵都是Cmd/Ctrl-Shift-A
(在 mac 下是 comm+shift+A
),以爲不舒服,按需修改快捷鍵便可。
eslint 的檢查規則是經過配置文件.eslintrc
實現的,可是各家有各家的 eslint 配置文件GitHub - AlloyTeam/eslint-config-alloy: AlloyTeam ESLint 規則:
詳細參考網址:
不過這裏不糾結用哪種 eslint 的配置,具體看項目和團隊,這裏只是說明須要作 eslint 的配置,而且須要作一些說明:
.eslintrc
配置文件須要添加修改地方,主要是爲了 prettier插件和eslint-config-prettier 插件和eslint-plugin-prettier插件使用的:
// 由於使用了 eslint 和 prettier,因此要加上他們 extends: [ 'eslint:recommended', 'plugin:prettier/recommended'], // required to lint *.vue files 使用 html參數 plugins: ['html', 'prettier'], // rules 規則就按照各家寫法。
在 webstorm 下,在項目根目錄
.eslintrc
做爲配置文件。
prettier 的檢查規則是經過配置文件.prettierrc
實現的,不過通常來講,只須要配置少部分規則便可:.
{ "printWidth": 100, "singleQuote": true, "semi": false }
有可能會出現的狀況是,prettier 格式化後,所有加了分號,可是 eslint 又要去掉分號,那麼就會重複了,這裏能夠簡單地設置 prettier 的分號設置跟 eslint 保持一致,其餘如此類推,但只適用在幾個比較特別的地方,能夠參考官方文檔。官方有詳細的介紹:Configuration File · Prettier
對此我我的的理解就是,editorconfig能夠協助開發工具在自動格式化或者自動排版或者錄入排版的時候進行代碼格式化,可是隻能支持比較簡單的規則,不過也減輕了一部分代碼格式化的壓力和成本,因此有比沒有好,並且最好要有。
// 放在項目根目錄的.editorconfig文件 root = true [*] charset = utf-8 indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true
詳細參考:
須要明確一點,代碼格式化須要由上而下執行,若是沒有強制性壓力督促,那麼是對抗不了人類的惰性的。
整個代碼檢查和格式化流程應該規範爲以下步驟:
參考文檔:
本文轉載自個人 blog:更新版 - 梳理前端開發使用 eslint 和 prettier 來檢查和格式化代碼問題