@pawover/kit 0.9.2 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -69
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -113,79 +113,23 @@ pnpm install
|
|
|
113
113
|
|
|
114
114
|
## 发布
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
由 Changesets v3 + GitHub Actions 驱动的**双通道发布模型**(完整细节见 [.changeset/README.md](./.changeset/README.md)):
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
- **feature = alpha 预发布通道**:push feature 全自动——CI 守卫(`verify-release-plan.mjs`)→ select-mode → version PR → version job 等 CI 绿后合并 → dispatch 触发 publish,发布 `alpha` dist-tag
|
|
119
|
+
- **main = 正式版通道**:只通过**发布合并**收代码——`pnpm release:merge`(同步校验 → 剥离 prerelease → 防撞车校验 → 建 release-main PR)→ **人工合并 PR**(正式版发布的人工确认节点)→ 发布 `latest`
|
|
120
|
+
- **核心设计**:alpha → 正式版之间必须经过人工确认节点,任何自动化都不会越过它
|
|
119
121
|
|
|
120
|
-
|
|
121
|
-
push main
|
|
122
|
-
└─ select-mode(读 .changeset/ + 对比 git tag)
|
|
123
|
-
├─ 有 changeset 文件 ───────→ version 通道:自动建/更「Version Packages」PR
|
|
124
|
-
│ └─ 合并 PR → push main → 再次 select-mode
|
|
125
|
-
├─ 无 changeset,但版本 > git tag ─→ publish 通道:build → pack → 发布 → 打 git tag
|
|
126
|
-
└─ 无变化 ──────────────────→ unchanged:安全空跑
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### 日常发布循环
|
|
130
|
-
|
|
131
|
-
1. **改代码**——不要手动修改任何 `package.json` 的 `version` 字段,版本号只能由 changesets 生成
|
|
132
|
-
2. **写 changeset**:`pnpm changeset`(交互式勾选受影响包与 bump 级别),生成 `.changeset/*.md` 变更说明;也可手写该文件,示例:
|
|
133
|
-
|
|
134
|
-
```md
|
|
135
|
-
---
|
|
136
|
-
"@pawover/kit-utils": patch
|
|
137
|
-
"@pawover/kit-hooks": minor
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
修复 xxx 问题 / 新增 xxx 能力
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
3. **提交 PR**:changeset 文件**必须与代码同 PR**,合并到 `main`
|
|
144
|
-
4. **CI 自动创建 / 更新「Version Packages」PR**:消费 changeset → 计算各包新版本号 → 更新 CHANGELOG(合并前 CI 会先跑 `scripts/verify-release.mjs` 守卫)
|
|
145
|
-
5. **审核并合并 Version Packages PR**:确认版本号符合预期、`@pawover/kit` 根包在发布列表中(有子包变更时必在)
|
|
146
|
-
6. **CI 自动发布**:`select-mode` 进入 publish 通道 → pack job(`pnpm build` + pack,`HUSKY: 0`)→ publish job(`changeset publish --from-pack-dir`,逐包 `npm publish`)→ 成功后自动打 git tag(`@pawover/kit-utils@0.0.0-alpha.5` 等)并推送
|
|
147
|
-
7. **验证**:`npm view @pawover/kit-utils dist-tags --json` 看 tag 落点;Actions 全绿;npmjs 包页出现 Provenance 徽标
|
|
148
|
-
|
|
149
|
-
### 版本号规则(当前 alpha pre 模式)
|
|
150
|
-
|
|
151
|
-
| bump | 子包(当前 `0.0.0-alpha.4`) | 根包(当前 `0.8.0`) |
|
|
152
|
-
| :--- | :--- | :--- |
|
|
153
|
-
| `patch` | `0.0.0-alpha.5` | `0.8.1-alpha.N` |
|
|
154
|
-
| `minor` | `0.1.0-alpha.0` | `0.9.0-alpha.N` |
|
|
155
|
-
| `major` | `1.0.0-alpha.0` | `1.0.0-alpha.N` |
|
|
156
|
-
|
|
157
|
-
- 子包 A 被发布时,依赖 A 的包(含根包)自动随同 patch 提升——**任何子包发布必伴随根包发布**(CI 硬校验守卫)
|
|
158
|
-
- 已存在于 registry 的版本不会重复发布
|
|
159
|
-
|
|
160
|
-
### dist-tag 规则
|
|
161
|
-
|
|
162
|
-
| 包 | 当前 `latest` | `alpha` tag |
|
|
163
|
-
| :--- | :--- | :--- |
|
|
164
|
-
| 5 个子包 | `0.0.0-alpha.4`(only-pre:从未出过稳定版,首个 pre 版本直接挂 latest) | `0.0.0-alpha.3` |
|
|
165
|
-
| 根包 `@pawover/kit` | `0.8.0`(有稳定版历史,pre 版本只发 alpha tag,不碰 latest) | — |
|
|
166
|
-
|
|
167
|
-
### 转正流程(发布正式版)
|
|
168
|
-
|
|
169
|
-
1. 确认 main 干净(无未合并的 Version PR)
|
|
170
|
-
2. `pnpm pre:exit` → 提交并 push main(`pnpm pre:enter-alpha` 可随时重新进入)
|
|
171
|
-
3. 之后照常走日常循环,此时版本号不再带 `-alpha`,发布到 `latest`
|
|
172
|
-
4. 清理遗留(可选):`npm dist-tag rm <包> alpha` 移除 5 个子包的旧 alpha tag
|
|
173
|
-
|
|
174
|
-
### 应急手动发布(一般不使用)
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
pnpm build && pnpm postbuild # 构建并同步 entry/metadata.json
|
|
178
|
-
pnpm public # 根包(turbo build && pnpm publish)
|
|
179
|
-
pnpm --filter @pawover/kit-utils publish --tag alpha # 单个子包(本地需登录态,交互式 OTP)
|
|
180
|
-
```
|
|
122
|
+
常用命令:
|
|
181
123
|
|
|
182
|
-
|
|
124
|
+
| 操作 | 命令 |
|
|
125
|
+
| :--- | :--- |
|
|
126
|
+
| 写变更说明 | `pnpm changeset` |
|
|
127
|
+
| 发布 alpha(自动) | `git push origin feature` |
|
|
128
|
+
| 发起正式版发布(人工闸门) | `pnpm release:merge` → 人工合并 PR |
|
|
129
|
+
| 基线同步 | feature 上 `git merge origin/main`(取 main 侧版本) |
|
|
130
|
+
| 应急手动发布 | `pnpm pre:enter-alpha && pnpm build && pnpm changeset publish` |
|
|
183
131
|
|
|
184
|
-
|
|
185
|
-
- `release.yml` 的 pack / publish job 已设 `HUSKY: 0`,勿删(否则 `npm pack` 触发根包 husky 直接失败)
|
|
186
|
-
- changeset 忘提交 → 不发布;手动改版本号 → 破坏 tag 对比逻辑,**永远不要**
|
|
187
|
-
- `pnpm changeset version` 需要干净工作区,本地跑之前先提交/暂存
|
|
188
|
-
- 只有本地手动发布才需要 OTP;CI 走 OIDC 不需要
|
|
132
|
+
> Trusted Publishing / OIDC:全程无需 npm token;分支保护、守卫明细、FAQ 见 `.changeset/README.md`。
|
|
189
133
|
|
|
190
134
|
## 测试
|
|
191
135
|
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/pawover"
|
|
7
7
|
},
|
|
8
8
|
"description": "一个基于 TypeScript 的开发工具包",
|
|
9
|
-
"version": "0.9.
|
|
9
|
+
"version": "0.9.3",
|
|
10
10
|
"type": "module",
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=22.20.0"
|
|
@@ -158,11 +158,11 @@
|
|
|
158
158
|
"./metadata.json": "./entry/metadata.json"
|
|
159
159
|
},
|
|
160
160
|
"dependencies": {
|
|
161
|
-
"@pawover/kit-
|
|
162
|
-
"@pawover/kit-hooks": "0.0.
|
|
163
|
-
"@pawover/kit-
|
|
164
|
-
"@pawover/kit-zod": "0.0.
|
|
165
|
-
"@pawover/kit-
|
|
161
|
+
"@pawover/kit-utils": "0.1.3",
|
|
162
|
+
"@pawover/kit-hooks": "0.0.4",
|
|
163
|
+
"@pawover/kit-types": "0.0.1",
|
|
164
|
+
"@pawover/kit-zod": "0.0.1",
|
|
165
|
+
"@pawover/kit-eslint-rules": "0.0.1"
|
|
166
166
|
},
|
|
167
167
|
"devDependencies": {
|
|
168
168
|
"@arethetypeswrong/cli": "^0.18.5",
|