前端規範 約定式提交

2021-10-14 04:39:05 字數 2673 閱讀 4645

「約定大於配置」的思想在軟體工程領域得到了廣泛的應用,例如 spring、angular 等大型專案。其目的只有乙個:減少軟體開發人員做決定的數量,提公升開發效率。這種思想同樣被應用到 git 提交當中,即「約定式提交」

約定式提交規範是一種基於提交訊息的輕量級約定。所謂輕量級約定,說白了,就是有一套用於建立提交訊息的簡單規則,這套規則源自於angular 提交規範,規定了提交訊息的整體結構:

():
翻譯成中文就是:

《提交型別》(《作用域》): 《簡要描述》

// 空一行

《正文》

// 空一行

《腳注》

第一行是 header 部分,必須使用型別字段字首,它由乙個名詞組成,只能是下面幾種之一:

其後接乙個可選的作用域字段,作用域必須是乙個描述某部分**的名詞,並用圓括號包圍,例如:fix(parser)。每個專案的作用域都不一樣,在基於 lerna 的 monorepo 倉庫中,通常用 package 名稱作為 scope,例如:

$ tree packages

packages

├── api

└── web

然後緊接著乙個冒號(英文半形)和空格。

最後是簡短描述,建議不要超過 50 個字元。

總結如下:

(): │ │ │

│ │ └─⫸ 描述:指的是對**變更的簡短總結

│ │

│ └─⫸ 作用域: animations|bazel|benchpress|common|compiler|...

│ └─⫸ 提交型別:build|ci|docs|feat|fix|perf|refactor|test...

body 部分是對本次 commit 的詳細描述,可以分成多行,提交者自由發揮。

footer 部分一般用於記錄不相容的改動,以breaking change開頭,後面是對變動的描述、以及變動理由和遷移方法。最後還可以新增關閉的 issue。

breaking

change

:// 空一行

// 空一行

// 空一行

fixes #

有了約定式提交,不僅降低了開發者的心智負擔、增強團隊凝聚力,還可以編寫基於約定的自動化工具,優點如下:

在專案提交過程中,為了防止亂寫提交訊息,可使用 commitlint 配合 husky 來實現如下的效果:

可以看到,當提交訊息不符合「約定」的時候,直接拒絕此次提交。首先安裝依賴包:

$ yarn add husky @commitlint/config-conventional @commitlint/cli --dev
然後新增commitlint.config.js檔案:

module.exports =

最後在 package.json 中新增如下配置即可:

"husky"

:}

@commitlint/prompt-cli 包還提供了乙個命令列互動式建立提交訊息的方式,效果如下:

這個工具嚴格按照提交訊息撰寫的流程引導開發者就行填寫,而且可以看到,每一步都有詳細的提示,安裝方法:

$ yarn add @commitlint/prompt-cli --dev
然後在 package.json 中新增 scripts:

"scripts"

:,

下次提交不要直接用git commit -am '***',而是用npm run commit,會自動開啟上面的命令列互動流程。

有了規範化的提交訊息,還可以用 conventional-changelog-cli 來自動生成 changelog,例如提交資訊為:

可自動讀取所有提交訊息,並生成 changelog:

首先安裝依賴:

$ yarn add conventional-changelog-cli --dev
然後在 pacakge.json 中新增 scripts:

"scripts"

:,

最後執行:

$ npm run changelogs

命名規範 C 命名規範約定

命名規則約定 序 號描述示例 1類命名混合使用大小寫,首字母大寫 classname 2型別定義,包括列舉和typedef,混合使用大小寫,首字母大寫 typename 3區域性變數混合使用大小寫,且首字母小寫,名字與底層資料型別無關,且應該反映其所代表的事物 localvariable 4子程式引...

Git 提交規範

無規矩不成方圓,程式設計也一樣。乙個commit只做一件事情,若乙個commit做了多件事情需要拆分成多個commit 嚴格遵循commit message格式 每次只允許提交乙個commit,若本地有多個commit等待提交,必須等前面的commit合併進入主版本庫並在本地合併完成後才可提交後面的...

Git提交規範

type為必填項,用於指定commit的型別,約定了feat fix兩個主要type,以及docs style build refactor revert五個特殊type,其餘type暫不使用。主要type feat 增加新功能 fix 修復bug 特殊type docs 只改動了文件相關的內容 s...