如何文明提交代碼

程序員最煩的幾件事:寫測試,變量命名,還有填代碼提交信息(commit message)。翻幾個開源項目遍立刻能夠回味那做文湊字數的青春時光。javascript

其實 commit message 的做用遠不止如此,通過簡單的配置即可無痛成爲代碼提交的文明公民。java

Commit Message 的做用

最起碼的一點,項目的提交歷史是其餘人(包括將來的本身)瞭解項目的一個重要途徑。好的提交歷史能夠方便其餘人蔘與進來,也能夠方便本身快速定位問題。git

此外,提交信息還能夠用來觸發 CI 構建,自動生成 CHANGELOG ,版本自動語義化提高…… 只須要一點點配置就能夠幹這麼多,真是懶人必備。程序員

選擇風格

跟 Code Style 同樣,Commit Message 也有各類風格。若是沒什麼特殊癖好推薦用基於 Angular ,
後獨立開來的 Conventional Commits 風格。
它也基本是各個工具的默認配置,因此搭配起來不須要折騰。github

纔不要又記什麼規則

雖然規則很少,但不必定能隨時記住,特別是對新人,必需要有友好的方式提交。npm

commitizen 是一個很好的選擇,經過命令行回答幾個問題便可填完信息,減輕了記憶負擔。
它是一個通用的工具,經過插件方式支持各類風格。咱們選擇 Conventional 須要安裝
cz-conventional-changelogjson

npm install --save-dev commitizen cz-conventional-changelog

而後配置 package.json 就能夠經過 npm run commit 提交。svg

{
  "scripts": {
    "commit": "git-cz"
  }
}

另外 VSCode 用戶也能夠用 vscode-commitizen
經過 ctrl+shift+pcommand+shift+p 提交。工具

Lint 一 Lint 萬無一失

沒錯,Commit Message 也有 Linter ,可對 Commit Message 進行檢驗,杜絕打字手殘和渾水摸魚。測試

這裏用 commitlint 配合 husky 實現自動檢測。

commitlint 也是通用的工具,須要同時安裝風格配置。 husky 能夠方便使用 git hooks ,在 commit 時觸發 commitlint 。

npm install --save-dev @commitlint/cli @commitlint/config-conventional husky

項目根新建 commitlint.config.js

module.exports = {
  extends: ['@commitlint/config-conventional']
}

配置 package.json

{
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  },
}

自動更新

最後安裝 standard-version 實現自動生成 CHANGELOG 和版本自動語義化提高。

npm install --save-dev standard-version

配置 package.json

{
  "scripts": {
    "release": "standard-version"
  }
}

第一次發佈時能夠用如下命令重置

npm run release -- --first-release

之後直接 npm run release 便可。

也能夠手動指定版本:

# npm run script
npm run release -- --release-as minor
# Or
npm run release -- --release-as 1.1.0

小紅花貼起來

Commitizen friendly

Conventional Commits

在 README 中加入小徽章可方便其餘人瞭解風格。

[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?maxAge=2592000)](http://commitizen.github.io/cz-cli/)
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg?maxAge=2592000)](https://conventionalcommits.org)

完整配置

安裝

npm install --save-dev commitizen cz-conventional-changelog @commitlint/cli @commitlint/config-conventional husky standard-version

配置 package.json

{
  "scripts": {
    "commit": "git-cz",
    "release": "standard-version"
  },
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  },
}

項目根新建 commitlint.config.js

module.exports = {
  extends: ['@commitlint/config-conventional']
}

【完】

相關文章
相關標籤/搜索