自動產生 semantic Versioning 版號與版本資訊 使用 semantic-release 或 standard-version

Lin Yen-Cheng on 2020-04-25 4 min. read

當我們使用 JavaScript 開發時,常常會需要使用 npm 進行 node_modules 的安裝,相關的使用說明可以參考前一篇寫的 NPM 常用指令教學

在使用的過程中,版本號代表的意涵就相對重要,那這篇文章中將提到:

  • 專案的版號與版本資訊簡介
  • 如何透過 semantic-release 或 standard-version 自動產生版號、版本資訊

Semantic Versioning

當有一天我們也需要 release 我們開發的程式給其他人使用時,每次 release 的版號以及內容就會顯得重要,版號通常都是以 semver 的原則,會有三位數字 1.2.3 對應到 主版號.次版號.修訂號

版號資訊會在 package.json 中 version 這個值,另外版本資訊都跟 git tag 有關,通常會寫在:

所以當我們每次進行發佈前:

  1. 修改版號
  2. 加上 git tag
  3. 撰寫 CHANGELOG.md
  4. 更新到版本控制系統中撰寫 Release Note
  5. 發佈

自動化版號與版本資訊產生工具

只要 commit 訊息有遵守相關原則,工具就有辦法做到 lint 相關訊息並統整與釋出。

那按照適用的環境主要有以下兩個工具:

semantic-releasestandard-version
有 CI/CD無 CI/CD
git tag 及 releasesgit tag 及 CHANGELOG.md

訊息格式會像這樣 類型(範圍): 敘述,範圍通常用檔名,所以一個 commit 訊息可能會是:

BREAKING CHANGE(README.md): 第一版說明文件

常用類型:

  • BREAKING CHANGE: 影響功能
  • feat: 新增功能
  • perf: 效能改善
  • fix: 修正 bug

其他不會被統整,但可能有機會用到的:

  • docs 文件
  • refactor 重構
  • revert 復原
  • style 寫樣式
  • test 測試功能

semantic-release

  1. 在 CI 工具中執行相關指令
  2. 自動統整 commit 訊息成 Release Note、修改版號並加上 git tag、更新至版控系統
  3. 發佈

standard-version

  1. 本機端執行相關指令
  2. 自動統整 commit 訊息並更新 CHANGELOG.md、更新版號並加上 git tag
  3. 執行 Push 相關指令更新至版控系統
  4. 發佈

喜歡這篇文章,請幫忙拍拍手喔 🤣

share