前端工程化-格式化-pre-commit
阿新 • • 發佈:2021-12-22
前端工程化-格式化
React專案
Pre-commit Hook,在git commit之前進行程式碼格式化
為了防止一些不規範的程式碼 commit
並push
到遠端,我們可以在git
命令執行前用一些鉤子來檢測並阻止。現在大前端主要有兩種git
鉤子外掛:husky
(jquery與next.js都在用),pre-commit
(antd在用)。
-
安裝
prettier
prettier 文件npm install --save-dev --save-exact prettier echo {}> .prettierrc.json touch .prettierignore
-
在
.prettierrc.json
{ "singleQuote": true, // 單引號 "semi": false, // 分號 "tabWidth": 2, // 製表符寬度 "useTabs": false, // 使用製表符 "bracketSpacing": true, // 物件屬性新增 空格 { foo: 'aaa' } "arrowParens": "avoid", "printWidth": 200, // 程式碼換行長度 "jsxBracketSameLine": true, "jsxSingleQuote": true }
-
在
.prettierignore
中寫入# Ignore artifacts: build coverage
-
-
安裝 Pre-commit Hook
npx mrm lint-staged
這時在
package.json
中會多出一些欄位"devDependencies": { "husky": ">=6", "lint-staged": ">=10", "prettier": "2.5.1" }, "lint-staged": { "*.{js,css,md}": "prettier --write" }
在
lint-staged
中另新增檔案型別ts,tsx,js,jsx
:"*.{js,css,md,ts,tsx,js,jsx}": "prettier --write"
npx mrm lint-staged
不成功出現錯誤,可能是因為:-
沒有把
prettier
新增到devDependencies
: 重新安裝 -
node 版本太低,升級node版本
n
模組是專門用來管理nodejs的版本,- 安裝n模組:
npm install -g n
- 把當前系統的 Node 更新成最新的 “穩定版本”:
n stable
- 安裝n模組:
-
-
安裝
eslint-config-prettier
npm i eslint-config-prettier --save-dev
在
package.json
的eslintConfig
規則中新增prettier
規則,放在後面,覆蓋一部分的eslint
規則"eslintConfig": { "extends": [ "react-app", "react-app/jest" ]}
"eslintConfig": { "extends": [ "react-app", "react-app/jest", "prettier" ]}
commitlint: 規範化 commit message的內容
- 安裝
commitlint
: commitlint 文件
# Install and configure if needed
npm install --save-dev @commitlint/{cli,config-conventional}
# For Windows:
npm install --save-dev @commitlint/config-conventional @commitlint/cli
# Configure commitlint to use conventional config
echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
# Active hooks
npx husky install
# or
yarn husky install
# Add hook
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit $1'
# or
yarn husky add .husky/commit-msg 'yarn commitlint --edit $1'
commitlint規範:
commit message: feat: add login
型別 | 描述 |
---|---|
build | 編譯相關的修改,例如釋出版本、對專案構建或者依賴的改動 |
chore | 其他修改, 比如改變構建流程、或者增加依賴庫、工具等 |
ci | 持續整合修改 |
docs | 文件修改 |
feat | 新特性、新功能 |
fix | 修改bug |
perf | 優化相關,比如提升效能、體驗 |
refactor | 程式碼重構 |
revert | 回滾到上一個版本 |
style | 程式碼格式修改, 注意不是 css 修改 |
test | 測試用例修改 |