使用 Changesets 与 pnpm
注意
在撰写本文档时,最新版本的 pnpm 为 v6.14。最新版本的 Changesets 为 v2.16.0。
设置
要在 pnpm 工作区上设置 changesets,请将 changesets 作为开发依赖项安装到工作区的根目录中
pnpm add -Dw @changesets/cli
然后是 changesets 的 init 命令
pnpm changeset init
添加新的 changesets
要生成新的 changeset,请在存储库的根目录中运行 pnpm changeset
。生成的 .changeset
目录中的 markdown 文件应提交到存储库。
发布更改
- 运行
pnpm changeset version
。这将提升之前使用pnpm changeset
指定的包的版本(以及这些包的任何依赖项),并更新变更日志文件。 - 运行
pnpm install
。这将更新 lockfile 并重建包。 - 提交更改。
- 运行
pnpm publish -r
。此命令将发布所有版本已提升但尚未出现在注册表中的包。
使用 GitHub Actions
要自动化此过程,您可以将 changeset version
与 GitHub Actions 结合使用。
提升包版本
该操作将检测 changeset 文件何时到达 main
分支,然后打开一个新的 PR,列出所有版本已提升的包。合并后,这些包将被更新,您可以通过添加 publish
属性来决定是否发布。
发布
添加一个新的脚本 ci:publish
,它执行 pnpm publish -r
。它将在 changeset version
打开 PR 后发布到注册表。
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 }}
有关此操作的更多信息和文档,请访问 此处。