使用ESLint + Prettier簡化代碼 Review 過程


使用ESLint + Prettier簡化代碼 Review 過程


在最近的一個項目中,我們通過設置 ESLint 和 Prettier 來進行自動化語法檢查,並對 JavaScript 項目的代碼風格管理。

為什麼自動 Lint 和代碼風格很重要?

ESLint 通過對 JavaScript 文件執行自動掃描來查找常見的語法和代碼風格錯誤。

Prettier 掃描文件中的樣式問題,並自動重新格式化代碼,以確保縮進、間距、分號、單引號和雙引號等遵循一致的規則。

我們的團隊正在使用它們,因為:

  • 他們按照相同的規則使每個人都保持一致
  • 它們節省了代碼 review 的時間,因為我們可以安全地忽略所有的代碼風格問題,並專注於真正重要的事情,比如代碼的結構和語義。
  • 他們能夠發現錯誤。儘管並不是很多,但實際上 ESLint 還是檢查出了很多語法錯誤和簡單的類型錯誤,例如未定義的變量。
  • 設置它們是一次性的,但節省的時間積累起來非常可觀。

配置 Prettier 使其與 ESLint 一起工作

Prettier 可以作為ESLint的插件【https://github.com/prettier/eslint-plugin-prettier】運行,它允許你用單個命令對代碼進行 lint 和格式化。你對自己開發過程所做的任何優化都是本文的一個勝利。Prettier + ESLint 是開發者的天堂。


使用ESLint + Prettier簡化代碼 Review 過程


獨自前往是危險的!拿著這個。

如果你曾經嘗試過將 Prettier 和 ESLint 放在一起運行,那麼可能會遇到規則衝突。別擔心!你不是在孤軍奮戰。eslint-config-prettier 插件【https://github.com/prettier/eslint-config-prettier】將自動禁用所有 ESLint 的規則衝突。

如果你還沒有使用eslint-plugin-react,它可以提醒你將 PropTypes 添加到組件中,eslint-plugin-react -hooks 可以幫助你解決用戶遇到的常見 React hooks API 問題。首先將以下這些安裝為 devDependencies:

1npm install --save-dev eslint eslint-config-prettier eslint-plugin-prettier eslint-plugin-react eslint-plugin-react-hooks prettier

接下來,你還需要一些配置文件。首先,讓我們用 .eslintignore 忽略一堆不想涉及的東西:

1node_modules
2.next

還有 .prettierignore:

1package-lock.json
2.next
3node_modules/

你還需要一個.eslintrc 文件。我是這樣的:

 1{
2 "env": {
3 "browser": true,
4 "commonjs": true,

5 "es6": true,
6 "node": true
7 },
8 "plugins": [
9 "react",
10 "react-hooks"
11 ],
12 "extends": ["eslint:recommended", "plugin:react/recommended", "plugin:prettier/recommended"],
13 "parserOptions": {
14 "sourceType": "module",
15 "ecmaVersion": 2018
16 },
17 "settings": {
18 "react": {
19 "version": "detect"
20 }
21 },
22 "rules": {
23 "linebreak-style": ["error", "unix"],
24 "react-hooks/rules-of-hooks": "error",
25 "react-hooks/exhaustive-deps": "warn"
26 }
27}

還有一個.prettierrc 文件。這是我的:

1{
2 "singleQuote": true
3}

最後你只需要在 package.json 中添加一個 "lint" 腳本:

1"lint": "eslint --fix . && echo 'Lint complete.'"

我喜歡在它完成時給出一個提示,否則當沒有錯誤時它會沒有任何輸出。

我還為自己的 watch 腳本添加了 linting,如下所示:

1"watch": "watch 'clear && npm run -s test | tap-nirvana && npm run -s lint' src",

如果你從未用過 watch,需要先安裝它才能使用:

1npm install --save-dev watch

如果你是 Windows 用戶,我建議你使用 Windows 的 Linux 子系統。否則我將無法保證這些腳本都能正常工作。

嘗試使用 Zeit Now

可以通過視頻【https://ericelliottjs.com/shotgun-postamp-episode-one-linting/】查看 GitHub 連續部署的動作。在視頻中,我簡要介紹了 Zeit Now 的酷炫之處。

Zeit Now 是一款出色的託管服務,可與 GitHub 輕鬆集成,為你提供使用 serverless 技術的端到端持續部署。如果你不知道這意味著什麼,或者不知道如何編寫 “serverless” 應用的話也沒問題,你只需使用 Next.js【https://nextjs.org/】,讓 Next 和 Now 幫你處理所有細節。

這就像擁有世界上最好的 DevOps 團隊一樣 —— 無需聘請全職開發人員來簡化你的持續交付流程。 Zeit 在託管和開發時間上大大的降低了成本。

由於 Next 的自動 bundle splitting、服務器端渲染和超快的 serverless 響應時間,我們的應用比以往任何時候都更快,它們甚至可以與 Cloudflare CDN 【https://www.cloudflare.com/】集成從而在非常短的時間內同步到世界各地。

總結

  • 即使我正在進行原型設計,也會使用TDD。當你第一次使用TDD時,開始可能需要花費 15% - 30%的時間。編寫測試用例可以節省你的時間,因為你花費在更改代碼、刷新頁面以及遍歷工作流來測試UI上的時間被大大節省了。
  • 自動化 lint 和代碼格式化可以提高開發人員的工作效率,通過捕獲錯誤和使開發人員保持一致,使你的團隊在進行代碼 review 時把精力集中在更有意義和更高效的事情上。
  • 嘗試使用 Zeit Now。
  • 配置一個 watch 腳本,以便當你文件保存時能夠自動 lint 代碼並運行你的單元測試。

十五年編程經驗,今年1月整理了一批2019年最新WEB前端教學視頻,不論是零基礎想要學習前端還是學完在工作想要提升自己,這些資料都會給你帶來幫助,從HTML到各種框架,幫助所有想要學好前端的同學,學習規劃、學習路線、學習資料、問題解答。只要關注我的頭條號,後臺私信我【前端】兩個字,即可免費獲取。


分享到:


相關文章: