项目文件夹

文件
2026-07-13 21:37:05 +08:00

181 行
2.8 KiB
Markdown

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# 发布工作流
## 工具
| 工具 | 用途 |
| ------------- | ------------------------------ |
| 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 是必需的。