Files
2026-07-13 21:37:05 +08:00

181 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 发布工作流
## 工具
| 工具 | 用途 |
| ------------- | ------------------------------ |
| bumpp | 交互式版本号递增 |
| changelogen | 从提交记录生成变更日志 |
| pkg-pr-new | PR 预览包 |
## bumpp(版本号递增)
```bash
pnpm add -D bumpp
```
```json
{
"scripts": {
"release": "bumpp"
}
}
```
交互式提示选择补丁/次版本/主版本。可选参数:
```json
{
"scripts": {
"release": "bumpp --commit --tag --push"
}
}
```
针对单体仓库:
```bash
bumpp -r # 递归
bumpp packages/*/package.json # 指定包
```
## changelogen(变更日志)
```bash
pnpm add -D changelogen
```
```json
{
"scripts": {
"changelog": "changelogen --release"
}
}
```
组合工作流:
```json
{
"scripts": {
"release": "changelogen --release && bumpp"
}
}
```
## 完整发布流程
```json
{
"scripts": {
"release": "pnpm lint && pnpm test && changelogen --release && bumpp --commit --tag --push"
}
}
```
CI 在标签推送时发布到 npm。
## pkg-pr-newPR 预览)
适用于可发布的包。在 PR 上创建安装链接。
```yaml
# .github/workflows/pkg-pr-new.yml
name: Publish PR
on: pull_request
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install
- run: pnpm build
- run: pnpm dlx pkg-pr-new publish --compact --pnpm
```
针对单体仓库:
```bash
pnpm dlx pkg-pr-new publish --compact --pnpm './packages/*'
```
PR 评论会显示:
```
pnpm add https://pkg.pr.new/your-org/your-package@123
```
## 约定式提交
changelogen 正常工作需要:
```
feat: add dark mode support
fix: resolve memory leak in parser
docs: update README
chore: update dependencies
```
## npm 发布
### 基于令牌(旧方式)
```yaml
- run: pnpm publish --access public --no-git-checks
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
```
### OIDC(推荐)
无需令牌。完整配置见 ci-workflows.md。
```yaml
- run: pnpm publish --access public --no-git-checks --provenance
```
## 单体仓库发布
使用 pnpm
```bash
pnpm -r publish --access public
```
使用 bumpp
```bash
bumpp -r && pnpm -r publish
```
## 预发布版本
```bash
bumpp --preid beta # 1.0.0 -> 1.0.1-beta.0
bumpp --preid alpha # 1.0.0 -> 1.0.1-alpha.0
```
## Package.json 要求
```json
{
"name": "@scope/package",
"version": "1.0.0",
"repository": {
"type": "git",
"url": "git+https://github.com/org/repo.git"
},
"publishConfig": {
"access": "public"
}
}
```
`repository` 对于 npm provenance 是必需的。