<type>(<scope>) : <subject>
<空行>
<body>
<空行>
<footer>
複製代碼
Header部分只有一行,包括三個字段:type
(必需)、scope
(可選)和subject
(必需)git
type
用於說明 commit 的類別,只容許使用下面標識。npm
若是 type
爲 feat
和 fix
,則該 commit 將確定出如今 Change log 之中。json
scope
用於說明 commit 影響的範圍,好比數據層、控制層、視圖層等等,視項目不一樣而不一樣。bash
subject
是 commit 目的的簡短描述,不超過50個字符。工具
Body 部分是對本次 commit 的詳細描述,能夠分紅多行。下面是一個範例。性能
More detailed explanatory text, if necessary. Wrap it to
about 72 characters or so.
Further paragraphs come after blank lines.
- Bullet points are okay, too
- Use a hanging indent
複製代碼
Footer 部分只用於兩種狀況。單元測試
不兼容變更測試
若是當前代碼與上一個版本不兼容,則 Footer 部分以 BREAKING CHANGE
開頭,後面是對變更的描述、以及變更理由和遷移方法。優化
BREAKING CHANGE: isolate scope bindings definition has changed.
To migrate the code follow the example below:
Before:
scope: {
myAttr: 'attribute',
}
After:
scope: {
myAttr: '@',
}
The removed `inject` wasn't generaly useful for directives so there should be no code using it. 複製代碼
關閉 Issueui
若是當前 commit 針對某個issue,那麼能夠在 Footer 部分關閉這個 issue 。
Closes #234
複製代碼
也能夠一次關閉多個 issue 。
Closes #123, #245, #992
複製代碼
安裝
$ npm install -g commitizen
複製代碼
在項目目錄裏運行下面命令
$ commitizen init cz-conventional-changelog --save --save-exact
複製代碼
之後,凡是用到git commit命令,一概改成使用git cz。這時,就會出現選項,用來生成符合格式的 Commit message。
安裝
$ npm i @commitlint/cli @commitlint/config-conventional husky -D
複製代碼
配置 commitlint.config.js 在項目根目錄下新建 commitlint.config.js
, 內容以下:
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'subject-case': [0, 'never'],
'type-enum': [
2,
'always',
[
"docs", // Adds or alters documentation. 僅僅修改了文檔,好比README, CHANGELOG, CONTRIBUTE等等
"chore", // Other changes that don't modify src or test files. 改變構建流程、或者增長依賴庫、工具等 "feat", // Adds a new feature. 新增feature "fix", // Solves a bug. 修復bug "merge", // Merge branch ? of ?. "perf", // Improves performance. 優化相關,好比提高性能、體驗 "refactor", // Rewrites code without feature, performance or bug changes. 代碼重構,沒有加新功能或者修復bug "revert", // Reverts a previous commit. 回滾到上一個版本 "style", // Improves formatting, white-space. 僅僅修改了空格、格式縮進、逗號等等,不改變代碼邏輯 "test", // Adds or modifies tests. 測試用例,包括單元測試、集成測試等 "build" // 構建 ] ] } }; 複製代碼
修改package.json 文件夾
在package.json 中添加husky 配置
...
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
...
複製代碼
conventional-changelog
就是生成 Change log 的工具,運行下面的命令便可。
$ npm install -g conventional-changelog-cli
$ cd my-project
$ conventional-changelog -p angular -i CHANGELOG.md -w
複製代碼
上面命令不會覆蓋之前的 Change log,只會在 CHANGELOG.md
的頭部加上自從上次發佈以來的變更。
若是你想生成全部發布的 Change log,要改成運行下面的命令。
$ conventional-changelog -p angular -i CHANGELOG.md -w -r 0
複製代碼
爲了方便使用,能夠將其寫入package.json的scripts字段。
{
"scripts": {
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -w -r 0"
}
}
複製代碼
之後,直接運行下面的命令便可。
$ npm run changelog
複製代碼