編寫優雅的 commit message 並自動生成 changelog

commit message 規範

http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.htmlhtml

自動校驗 commit message

參考:https://github.com/conventional-changelog/commitlintnode

  1. 安裝依賴 npm install -D @commitlint/{config-conventional,cli} husky
  2. 在 package.json 添加 commitlint 配置和 git hook
"husky": {
  "hooks": {
    "commit-msg""commitlint -E HUSKY_GIT_PARAMS"
  }
},
"commitlint": {
  "extends": [
    "@commitlint/config-conventional"
  ]
}
  1. 提交 commit 觸發校驗

經過交互界面生成符合規範的 commit message

  1. 安裝依賴 npm install -D commitizen cz-conventional-changelog
  2. 在 package.json 中新增一條 script
"scripts": {
  ...
  "commit""git-cz"
}
  1. 在 package.json 添加 commitizen 配置
"config": {
  "commitizen": {
    "path""node_modules/cz-conventional-changelog"
  }
}
  1. 執行 git add .npm run commit
image

自動生成 changelog

參考:https://github.com/CookPete/auto-changeloggit

  1. 安裝依賴 npm install -D auto-changelog
  2. 建立配置文件 .auto-changelog
{
  "template""CHANGELOG.template",
  "unreleased"true,
  "commitLimit"false
}
  1. 建立自定義 changelog 模板 CHANGELOG.template.**注意替換組名和倉庫名**
# Changelog

{{#each releases}}
  ## [{{title}}]

  {{#commit-list commits heading='### Breaking Change' message='\[break\]'}}
    - {{subject}} [{{shorthash}}]({{href}})
  {{/commit-list}}

  {{#commit-list commits heading='### New Feature' message='feat: ' exclude='\[break\]'}}
    - {{subject}} [{{shorthash}}]({{href}})
  {{/commit-list}}

  {{#commit-list commits heading='### Bug Fix' message='fix: ' exclude='\[break\]'}}
    - {{subject}} [{{shorthash}}]({{href}})
  {{/commit-list}}
{{/each}}


  1. 在 package.json 中新增 script
"scripts": {
  ...
  "changelog""auto-changelog",
  "version""auto-changelog -p && git add CHANGELOG.md"
}
  1. 執行 npm run changelog

執行npm version時會自動生成帶所發佈版本號的 changeloggithub


  有任何問題能夠加入 聊天室 和做者進行交流: https://fiora.suisuijiang.com/web

本文分享自微信公衆號 - 牧碼的星星(gh_0d71d9e8b1c3)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。npm

相關文章
相關標籤/搜索