使用 changeset 生成项目的 CHANGELOG

安装依赖

1
pnpm add @changesets/changelog-github @changesets/cli -D

编写 npm script

1
2
3
4
5
"scripts": {
"init": "changeset init",
"change": "changeset",
"version": "changeset version"
},

初始化 changesets

运行该命令后会在根目录生成.changeset文件

1
pnpm run init

修改 .changeset/config.json 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json",
"changelog": [
"@changesets/changelog-github",
{
"repo": "camoth/changesets-github-test" // 修改为你的 github 项目
}
],
"commit": false,
"fixed": [],
"linked": [],
"access": "restricted",
"baseBranch": "master", // 修改为默认的分支名称
"updateInternalDependencies": "patch",
"ignore": []
}

提交变更文件

1
pnpm run change

生成版本文件

1
pnpm run version

不出意外的话运行这个命令会报错,所以需要先去 github 生成 TOKEN 然后添加到环境变量里面再运行命名
编辑 ~/.zshrc 添加以下这行

1
export GITHUB_TOKEN=YOUR_TOKEN

或者临时使用

1
GITHUB_TOKEN=YOUR_TOKEN pnpm changeset version

工作流程

  • 编写特征代码
  • 生成版本描述文件
  • 提交代码
  • 生成版本文件

拓展

如果是 github 开源项目的话,可以使用 github 的 workflows 来完善整体 CI 流程,以下 action 实现当发生 PR 的时候会自动生成 CHANGELOG 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
name: Release

on:
push:
branches:
- main

concurrency: ${{ github.workflow }}-${{ github.ref }}

jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v3

- name: Setup Node.js 16
uses: actions/setup-node@v3
with:
node-version: 16

- name: Install Dependencies
run: yarn

- name: Create Release Pull Request
uses: changesets/action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

如果是公司内部项目的话,可以不使用@changesets/changelog-github 这个包了

实例仓库

https://github.com/camoth/changesets-github-test