搭配 pnpm 使用 Changesets
注意事項
在撰寫本文件時,最新的 pnpm 版本為 v6.14。 最新的 Changesets 版本為 2.16.0 版。
安装
要在 pnpm workspace 上設置 changesets ,請將 changesets 作為開發依賴項 安裝在 workspace 的根目錄中:
pnpm add -Dw @changesets/cli
然後是 changesets 的初始化指令:
pnpm changeset init
添加新的 changesets
要生成新的 changesets,請在 workspace 的根目錄下運行 pnpm changesets 。 在 .changeset 目錄中生成的 markdown 文件應被 提交到 repository。
發布變更
- 執行 
pnpm changeset version. 這將提高先前使用pnpm changeset的套件(以及它們的任何依賴項)的版本,並更新變更日誌(changelog) 文件。 - 執行 
pnpm install。 這將會更新 lockfile 及重新打包套件。 - 提交更改
 - 執行 
pnpm publish -r。 此命令將發布所有包含被更新版本且尚未出現在註冊源中的套件。 
使用 GitHub Actions
若要自動化這個流程,您可以將 changeset version 與 GitHub Actions 搭配使用。
提升版本號
當檢測到 changeset 文件被合併到 main 分支時,該 action 將創建一個新的 PR,列出所有應該變更版本號的套件。 合併後,包將被更新,您可以通過添加 publish 屬性來決定是否發布。
發佈
Add a new script ci:publish which executes pnpm publish -r. It will publish to the registry once the PR is opened by 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 }}
有關此操作的更多資訊和文檔可以在這裡找到。