在 pnpm 中使用 Changesets
注意
在编写本文档时,最新的 pnpm 版本为 v6.14。 最新的 Changesets 版本是 v2.16.0。
配置
要在 pnpm 工作空间上配置 changesets,请将 changesets 作为开发依赖项安装在工作 空间的根目录中:
pnpm add -Dw @changesets/cli
然后 changesets 的初始化命令:
pnpm changeset init
添加新的 changesets
要生成新的 changesets,请在仓库的根目录中执行 pnpm changeset。 .changeset 目录中生成的 markdown 文件需要被提交到到仓库。
发布变更
- 运行 pnpm changeset version。 这将提高先前使用pnpm changeset(以及它们的任何依赖项)的版本,并更新变更日志文件。
- 运行 pnpm install。 这将更新锁文件并重新构建包。
- 提交更改。
- 运行 pnpm publish -r。 此命令将发布所有包含被更新版本且尚未出现在包注册源中的包。
使用 GitHub Actions
要自动执行此过程,您可以将 changeset version 与 GitHub actions 一起使用。
变更版本号
当检测到 changeset 文件被合并到 main 分支时,该 action 将创建一个新的 PR,列出所有应该变更版本号的包。 合并后,包将被更新,您可以通过添加 publish 属性来决定是否发布  。
发布
添加一个新脚本 ci:publish 执行 pnpm publish -r。 一旦 PR 被 changeset version 打开,包就会发布到注册表中。
package.json
{
   "scripts": {
      "ci:publish": "pnpm publish -r"
   },
...
}
name: Changesets
on:
  push:
    branches:
      - main
env:
  CI: true
  PNPM_CACHE_FOLDER: .pnpm-store
jobs:
  version:
    timeout-minutes: 15
    runs-on: ubuntu-latest
    steps:
      - name: checkout code repository
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: setup node.js
        uses: actions/setup-node@v3
        with:
          node-version: 14
      - name: install pnpm
        run: npm i pnpm@latest -g
      - name: Setup npmrc
        run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc
      - name: setup pnpm config
        run: pnpm config set store-dir $PNPM_CACHE_FOLDER
      - name: install dependencies
        run: pnpm install
      - name: create and publish versions
        uses: changesets/action@v1
        with:
          version: pnpm ci:version
          commit: "chore: update versions"
          title: "chore: update versions"
          publish: pnpm ci:publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
有关此操作的更多信息和文档可以在此处找到。