@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.
Files changed (2) hide show
  1. package/README.md +13 -69
  2. package/package.json +6 -6
package/README.md CHANGED
@@ -113,79 +113,23 @@ pnpm install
113
113
 
114
114
  ## 发布
115
115
 
116
- 发布由 [Changesets](https://changesets.dev) v3 + GitHub Actions 全自动驱动,push `main` 即触发,全程无需手动登录 npm 或输入 OTP(走 Trusted Publishing / OIDC 认证,发布自动附带 provenance 证明)。
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
- - **Trusted Publisher**(npmjs 后台):Repository 必须是 `pawover-kit`(不是包名)、workflow 必须 `.github/workflows/release.yml`、Environment 留空——任何不一致会导致 CI 发布 E404
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.2",
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-eslint-rules": "0.0.0",
162
- "@pawover/kit-hooks": "0.0.3",
163
- "@pawover/kit-utils": "0.1.2",
164
- "@pawover/kit-zod": "0.0.0",
165
- "@pawover/kit-types": "0.0.0"
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",