在 pnpm 中使用 Changesets

在 pnpm 中使用 Changesets - 图1注意

在编写本文档时,最新的 pnpm 版本为 v6.14。 最新的 Changesets 版本是 v2.16.0。

配置

要在 pnpm 工作空间上配置 changesets,请将 changesets 作为开发依赖项安装在工作空间的根目录中:

  1. pnpm add -Dw @changesets/cli

然后 changesets 的初始化命令:

  1. pnpm changeset init

添加新的 changesets

要生成新的 changesets,请在仓库的根目录中执行 pnpm changeset.changeset 目录中生成的 markdown 文件需要被提交到到仓库。

发布变更

  1. 运行 pnpm changeset version。 这将提高先前使用 pnpm changeset (以及它们的任何依赖项)的版本,并更新变更日志文件。
  2. 运行 pnpm install。 这将更新锁文件并重新构建包。
  3. 提交更改。
  4. 运行 pnpm publish -r。 此命令将发布所有包含被更新版本且尚未出现在包注册源中的包。

使用 GitHub Actions

要自动执行此过程,您可以将 changeset version 与 GitHub actions 一起使用。

变更版本号

当检测到 changeset 文件被合并到 main 分支时,该 action 将创建一个新的 PR,列出所有应该变更版本号的包。 合并后,包将被更新,您可以通过添加 publish 属性来决定是否发布。

发布

添加一个新脚本 ci:publish 执行 pnpm publish -r。 It will publish to the registry once the PR is opened by changeset version.

package.json

  1. {
  2. "scripts": {
  3. "ci:publish": "pnpm publish -r"
  4. },
  5. ...
  6. }
  1. name: Changesets
  2. on:
  3. push:
  4. branches:
  5. - main
  6. env:
  7. CI: true
  8. PNPM_CACHE_FOLDER: .pnpm-store
  9. jobs:
  10. version:
  11. timeout-minutes: 15
  12. runs-on: ubuntu-latest
  13. steps:
  14. - name: checkout code repository
  15. uses: actions/checkout@v3
  16. with:
  17. fetch-depth: 0
  18. - name: setup node.js
  19. uses: actions/setup-node@v3
  20. with:
  21. node-version: 14
  22. - name: install pnpm
  23. run: npm i pnpm@latest -g
  24. - name: Setup npmrc
  25. run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc
  26. - name: setup pnpm config
  27. run: pnpm config set store-dir $PNPM_CACHE_FOLDER
  28. - name: install dependencies
  29. run: pnpm install
  30. - name: create and publish versions
  31. uses: changesets/action@v1
  32. with:
  33. version: pnpm ci:version
  34. commit: "chore: update versions"
  35. title: "chore: update versions"
  36. publish: pnpm ci:publish
  37. env:
  38. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

有关此操作的更多信息和文档可以在此处找到。