簡單介紹下,changeset是一個版本管理和生成更新日誌的工具,超級適用於多包倉庫,比如monorepo,可以在提交發布時,自動更新所有包的版本號,並且生成更新日誌。
一、安裝
進入項目之後執行命令,安裝changeset,並且初始化
pnpm add -D @changesets/cli
pnpm changeset init
執行完之後,在項目中會新增一個.changeset目錄,用於存放配置文件和臨時的版本變更描述文件。
.changeset/
├─ config.json
└─ README.md
二、使用流程
在通用的版本管理流程中,通常會區分為:
- 預發佈版本(如alpha和beta)
- 正式版本
預發佈版本
預發佈階段的兩級為alpha和beta,下面是大致區別:
| 維度 | alpha(內測) | beta(公測) |
|---|---|---|
| 代碼穩定性 | 隨時可能大改 | 功能基本鎖定,不會有大的調整 |
| 測試人羣 | 團隊內部 | 灰度用户 |
| 發佈頻率 | 每天/每週都能出包 | 節奏稍慢,某個階段的版本 |
| 版本號示例 | 1.0.0-alpha.0 ➜ 1.0.0-alpha.1 … | 1.0.0-beta.0 ➜ 1.0.0-beta.1 … |
| 退出條件 | 達到功能完備 → 進入beta | 連續幾天無阻塞Bug → 發佈正式版 |
相關命令:
pnpm changeset pre enter alpha # 進入alpha模式,
pnpm changeset version # 版本變成0.0.1-alpha.0
pnpm changeset pre enter beta # 進入beta模式
pnpm changeset version # 版本變成0.0.1-beta.0
# 結束預發佈
pnpm changeset pre exit
pnpm changeset version # 版本變成0.0.1
正式版本
當你完成某個包的開發,準備發版時,執行:
pnpm changeset
如果是多包倉庫,終端會出現一個選擇框,讓你選擇改過的包,
- 按空格選中你改過的包(有星號就算選中)→ 回車,
-
選包的更新級別,會依次出現major和minor,回車到下一步,如果都沒選中,就默認為patch,輸入本次更新的描述回車
- patch:修復小bug(1.0.0→1.0.1)
- minor:添加新功能(1.0.0→1.1.0)
- major:破壞性的大版本調整,api級別的調整(1.0.0→2.0.0)
單包倉庫就直接到了選擇更新級別這一步,同樣是輸入描述,然後回車;
生成版本號,執行:
pnpm changeset version
你會發現.changeset文件夾中剛才生成的md文件都已經不見了,版本號也升好了。
發佈
- 登錄npm
npm login
- 發版
pnpm changeset publish
成功後,會在git創建對應的git tag,終端會給出每個包的版本號和 npm鏈接。