@mycodemap/mycodemap 0.2.0 → 0.3.4
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/CHANGELOG.md +85 -0
- package/dist/cli/commands/ship/analyzer.d.ts +26 -0
- package/dist/cli/commands/ship/analyzer.d.ts.map +1 -0
- package/dist/cli/commands/ship/analyzer.js +143 -0
- package/dist/cli/commands/ship/analyzer.js.map +1 -0
- package/dist/cli/commands/ship/checker.d.ts +20 -0
- package/dist/cli/commands/ship/checker.d.ts.map +1 -0
- package/dist/cli/commands/ship/checker.js +86 -0
- package/dist/cli/commands/ship/checker.js.map +1 -0
- package/dist/cli/commands/ship/index.d.ts +17 -0
- package/dist/cli/commands/ship/index.d.ts.map +1 -0
- package/dist/cli/commands/ship/index.js +51 -0
- package/dist/cli/commands/ship/index.js.map +1 -0
- package/dist/cli/commands/ship/monitor.d.ts +19 -0
- package/dist/cli/commands/ship/monitor.d.ts.map +1 -0
- package/dist/cli/commands/ship/monitor.js +105 -0
- package/dist/cli/commands/ship/monitor.js.map +1 -0
- package/dist/cli/commands/ship/pipeline.d.ts +23 -0
- package/dist/cli/commands/ship/pipeline.d.ts.map +1 -0
- package/dist/cli/commands/ship/pipeline.js +146 -0
- package/dist/cli/commands/ship/pipeline.js.map +1 -0
- package/dist/cli/commands/ship/publisher.d.ts +11 -0
- package/dist/cli/commands/ship/publisher.d.ts.map +1 -0
- package/dist/cli/commands/ship/publisher.js +75 -0
- package/dist/cli/commands/ship/publisher.js.map +1 -0
- package/dist/cli/commands/ship/rules/confidence-rules.d.ts +48 -0
- package/dist/cli/commands/ship/rules/confidence-rules.d.ts.map +1 -0
- package/dist/cli/commands/ship/rules/confidence-rules.js +122 -0
- package/dist/cli/commands/ship/rules/confidence-rules.js.map +1 -0
- package/dist/cli/commands/ship/rules/quality-rules.d.ts +25 -0
- package/dist/cli/commands/ship/rules/quality-rules.d.ts.map +1 -0
- package/dist/cli/commands/ship/rules/quality-rules.js +134 -0
- package/dist/cli/commands/ship/rules/quality-rules.js.map +1 -0
- package/dist/cli/commands/ship/rules/version-rules.d.ts +24 -0
- package/dist/cli/commands/ship/rules/version-rules.d.ts.map +1 -0
- package/dist/cli/commands/ship/rules/version-rules.js +75 -0
- package/dist/cli/commands/ship/rules/version-rules.js.map +1 -0
- package/dist/cli/commands/ship/versioner.d.ts +12 -0
- package/dist/cli/commands/ship/versioner.d.ts.map +1 -0
- package/dist/cli/commands/ship/versioner.js +92 -0
- package/dist/cli/commands/ship/versioner.js.map +1 -0
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -1
- package/docs/PUBLISHING.md +344 -34
- package/docs/ai-guide/COMMANDS.md +34 -0
- package/docs/rules/pre-release-checklist.md +426 -0
- package/package.json +8 -2
- package/scripts/.githooks/commit-msg +31 -0
- package/scripts/.githooks/pre-commit +55 -0
- package/scripts/benchmark.ts +209 -0
- package/scripts/hooks/commit-msg +24 -0
- package/scripts/hooks/install-hooks.sh +29 -0
- package/scripts/hooks/pre-commit +60 -0
- package/scripts/pre-release-check.js +717 -0
- package/scripts/release.sh +142 -0
- package/scripts/run-benchmark.sh +29 -0
- package/scripts/validate-ai-docs.js +294 -0
- package/scripts/validate-docs.js +238 -0
- package/scripts/validate-pack.js +86 -0
- package/dist/ai/claude.d.ts +0 -38
- package/dist/ai/claude.d.ts.map +0 -1
- package/dist/ai/claude.js +0 -169
- package/dist/ai/claude.js.map +0 -1
- package/dist/ai/codex.d.ts +0 -38
- package/dist/ai/codex.d.ts.map +0 -1
- package/dist/ai/codex.js +0 -169
- package/dist/ai/codex.js.map +0 -1
- package/dist/ai/factory.d.ts +0 -48
- package/dist/ai/factory.d.ts.map +0 -1
- package/dist/ai/factory.js +0 -95
- package/dist/ai/factory.js.map +0 -1
- package/dist/ai/index.d.ts +0 -12
- package/dist/ai/index.d.ts.map +0 -1
- package/dist/ai/index.js +0 -29
- package/dist/ai/index.js.map +0 -1
- package/dist/ai/provider.d.ts +0 -70
- package/dist/ai/provider.d.ts.map +0 -1
- package/dist/ai/provider.js +0 -31
- package/dist/ai/provider.js.map +0 -1
- package/dist/ai/subagent-caller.d.ts +0 -90
- package/dist/ai/subagent-caller.d.ts.map +0 -1
- package/dist/ai/subagent-caller.js +0 -280
- package/dist/ai/subagent-caller.js.map +0 -1
- package/dist/ai/types.d.ts +0 -70
- package/dist/ai/types.d.ts.map +0 -1
- package/dist/ai/types.js +0 -5
- package/dist/ai/types.js.map +0 -1
- package/dist/generator/ai-overview.d.ts +0 -51
- package/dist/generator/ai-overview.d.ts.map +0 -1
- package/dist/generator/ai-overview.js +0 -160
- package/dist/generator/ai-overview.js.map +0 -1
- package/dist/orchestrator/ai-feed-generator.d.ts +0 -210
- package/dist/orchestrator/ai-feed-generator.d.ts.map +0 -1
- package/dist/orchestrator/ai-feed-generator.js +0 -377
- package/dist/orchestrator/ai-feed-generator.js.map +0 -1
- package/docs/archive/test-report-symbol-search.md +0 -384
- package/docs/archive/test-scenario-4-complexity-analysis.md +0 -460
- package/docs/archive/test_report_scenario5.md +0 -615
- package/docs/archive/test_scenario_3_impact_analysis_report.md +0 -520
package/docs/PUBLISHING.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# NPM 自动发布指南
|
|
2
|
-
|
|
2
|
+
3
|
|
3
3
|
> 本文档说明如何配置和触发 @mycodemap/mycodemap 的自动发布流程
|
|
4
4
|
|
|
5
5
|
## 📋 发布流程概览
|
|
@@ -10,35 +10,42 @@
|
|
|
10
10
|
|
|
11
11
|
## 🔧 前置配置
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
本项目使用 **OIDC Trusted Publishing** 方式发布,无需配置 NPM Token。
|
|
14
|
+
|
|
15
|
+
### OIDC Trusted Publishing 配置
|
|
16
|
+
|
|
17
|
+
1. **在 NPM 上配置 Trusted Publisher**
|
|
18
|
+
- 访问包管理页面: https://www.npmjs.com/package/@mycodemap/mycodemap/access
|
|
19
|
+
- 找到 "Publishing" 或 "Grant Access" 部分
|
|
20
|
+
- 点击 "Add GitHub Actions as a trusted publisher"
|
|
21
|
+
- 填写以下信息:
|
|
22
|
+
- **GitHub Organization**: `yuanyuanyuan`
|
|
23
|
+
- **GitHub Repository**: `mycodemap`
|
|
24
|
+
- **Workflow Name**: `publish.yml`
|
|
25
|
+
- **GitHub Environment**: (留空)
|
|
14
26
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
27
|
+
2. **确保没有设置 NPM_TOKEN**
|
|
28
|
+
```bash
|
|
29
|
+
# 检查是否设置了 NPM_TOKEN
|
|
30
|
+
gh secret list | grep NPM_TOKEN
|
|
31
|
+
|
|
32
|
+
# 如果存在,删除它
|
|
33
|
+
gh secret remove NPM_TOKEN
|
|
34
|
+
```
|
|
20
35
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
36
|
+
3. **验证权限配置**
|
|
37
|
+
确保 workflow 中设置了正确的权限:
|
|
38
|
+
```yaml
|
|
39
|
+
permissions:
|
|
40
|
+
contents: write # 用于创建 GitHub Release
|
|
41
|
+
id-token: write # 用于 OIDC trusted publishing (必需)
|
|
42
|
+
```
|
|
27
43
|
|
|
28
|
-
###
|
|
44
|
+
### 2FA/OTP 注意事项
|
|
29
45
|
|
|
30
|
-
|
|
31
|
-
- 登录 [npmjs.com](https://www.npmjs.com/)
|
|
32
|
-
- 进入包页面 → Access → Grant Access
|
|
33
|
-
- 选择 "Automation" → "GitHub Actions"
|
|
34
|
-
- 配置:
|
|
35
|
-
- GitHub Organization: `yuanyuanyuan` (或你的组织名)
|
|
36
|
-
- GitHub Repository: `mycodemap`
|
|
37
|
-
- Workflow name: `publish.yml`
|
|
46
|
+
如果你的 npm 账号启用了 2FA,使用 OIDC 发布**不需要**提供 OTP,因为 OIDC 会绕过 2FA 限制。
|
|
38
47
|
|
|
39
|
-
|
|
40
|
-
- 当前 `publish.yml` 已同时支持两种方式
|
|
41
|
-
- 如使用 OIDC,确保不设置 `NPM_TOKEN` secret
|
|
48
|
+
**注意**: 不要在 workflow 中设置 `NODE_AUTH_TOKEN` 环境变量,这会干扰 OIDC 认证。
|
|
42
49
|
|
|
43
50
|
## 🚀 发布操作
|
|
44
51
|
|
|
@@ -88,13 +95,215 @@ git push origin v0.2.1
|
|
|
88
95
|
2. 点击 "Run workflow"
|
|
89
96
|
3. 可选择输入版本号,或直接运行使用当前 package.json 版本
|
|
90
97
|
|
|
91
|
-
|
|
98
|
+
### 方法 4: 本地直接发布 (需要 2FA OTP)
|
|
99
|
+
|
|
100
|
+
**注意**: 如果账号启用了 2FA,本地发布需要提供 OTP:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# 确保所有检查通过
|
|
104
|
+
npm run check:all
|
|
105
|
+
|
|
106
|
+
# 发布到 npm (需要 2FA OTP)
|
|
107
|
+
npm publish --access public --otp=YOUR_OTP_CODE
|
|
108
|
+
|
|
109
|
+
# 例如
|
|
110
|
+
npm publish --access public --otp=250222
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## ✅ 发布前完整检查流程
|
|
114
|
+
|
|
115
|
+
发布前必须执行以下检查:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# 1. 类型检查
|
|
119
|
+
npm run typecheck
|
|
120
|
+
|
|
121
|
+
# 2. 代码检查
|
|
122
|
+
npm run lint
|
|
123
|
+
|
|
124
|
+
# 3. 运行测试
|
|
125
|
+
npm test
|
|
126
|
+
|
|
127
|
+
# 4. 构建项目
|
|
128
|
+
npm run build
|
|
129
|
+
|
|
130
|
+
# 5. 打包验证
|
|
131
|
+
npm run validate-pack
|
|
132
|
+
|
|
133
|
+
# 6. 发布前 AI 文档检查
|
|
134
|
+
npm run docs:check:pre-release
|
|
135
|
+
|
|
136
|
+
# 7. 发布预览
|
|
137
|
+
npm pack --dry-run
|
|
138
|
+
|
|
139
|
+
# 或使用一键检查
|
|
140
|
+
npm run check:all
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 发布前检查清单
|
|
92
144
|
|
|
93
145
|
- [ ] 更新 `CHANGELOG.md` 记录本次变更
|
|
94
|
-
- [ ]
|
|
95
|
-
- [ ]
|
|
146
|
+
- [ ] 运行 `npm run docs:check:pre-release` - 确保 AI 文档检查通过
|
|
147
|
+
- [ ] 运行 `npm run typecheck` - 确保 0 errors
|
|
148
|
+
- [ ] 运行 `npm run lint` - 确保 0 errors (warnings 可接受)
|
|
149
|
+
- [ ] 运行 `npm test` - 确保所有测试通过
|
|
150
|
+
- [ ] 运行 `npm run validate-pack` - 确保打包验证通过
|
|
151
|
+
- [ ] 检查 `package.json` 版本号符合 [semver](https://semver.org/lang/zh-CN/) 规范
|
|
152
|
+
- [ ] 确保 git tag 与 package.json 版本一致
|
|
96
153
|
- [ ] 更新 `README.md` 中的版本说明(如需要)
|
|
97
|
-
|
|
154
|
+
|
|
155
|
+
## 🔧 GitHub Actions Workflow 配置
|
|
156
|
+
|
|
157
|
+
完整的 `.github/workflows/publish.yml` 配置:
|
|
158
|
+
|
|
159
|
+
```yaml
|
|
160
|
+
# [META] since:2026-03-04 | owner:release-team | stable:true
|
|
161
|
+
# [WHY] NPM package publishing workflow - 使用 OIDC Trusted Publishing
|
|
162
|
+
|
|
163
|
+
name: Publish to NPM
|
|
164
|
+
|
|
165
|
+
on:
|
|
166
|
+
# 方式1: 推送 v* 标签时自动发布
|
|
167
|
+
push:
|
|
168
|
+
tags:
|
|
169
|
+
- 'v*'
|
|
170
|
+
|
|
171
|
+
# 方式2: 手动触发(推荐用于首次发布或特殊情况)
|
|
172
|
+
workflow_dispatch:
|
|
173
|
+
inputs:
|
|
174
|
+
version:
|
|
175
|
+
description: '版本号 (例如: 0.2.0),留空则使用 package.json 中的版本'
|
|
176
|
+
required: false
|
|
177
|
+
type: string
|
|
178
|
+
|
|
179
|
+
jobs:
|
|
180
|
+
publish:
|
|
181
|
+
name: Build and Publish
|
|
182
|
+
runs-on: ubuntu-latest
|
|
183
|
+
permissions:
|
|
184
|
+
contents: write # 用于创建 GitHub Release
|
|
185
|
+
id-token: write # 用于 OIDC trusted publishing (必需)
|
|
186
|
+
|
|
187
|
+
steps:
|
|
188
|
+
- name: Checkout code
|
|
189
|
+
uses: actions/checkout@v4
|
|
190
|
+
with:
|
|
191
|
+
fetch-depth: 0 # 获取完整历史用于生成 changelog
|
|
192
|
+
|
|
193
|
+
- name: Setup Node.js
|
|
194
|
+
uses: actions/setup-node@v4
|
|
195
|
+
with:
|
|
196
|
+
node-version: '20'
|
|
197
|
+
cache: 'npm'
|
|
198
|
+
registry-url: 'https://registry.npmjs.org'
|
|
199
|
+
|
|
200
|
+
- name: Get version from package.json
|
|
201
|
+
id: package-version
|
|
202
|
+
run: |
|
|
203
|
+
VERSION=$(node -p "require('./package.json').version")
|
|
204
|
+
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
205
|
+
echo "Package version: $VERSION"
|
|
206
|
+
|
|
207
|
+
- name: Validate version
|
|
208
|
+
run: |
|
|
209
|
+
VERSION="${{ steps.package-version.outputs.version }}"
|
|
210
|
+
if [ -z "$VERSION" ]; then
|
|
211
|
+
echo "❌ Error: 无法从 package.json 读取版本号"
|
|
212
|
+
exit 1
|
|
213
|
+
fi
|
|
214
|
+
echo "✅ Version: $VERSION"
|
|
215
|
+
|
|
216
|
+
- name: Check tag matches version (tag 触发时)
|
|
217
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
218
|
+
run: |
|
|
219
|
+
TAG_VERSION=${GITHUB_REF#refs/tags/v}
|
|
220
|
+
PKG_VERSION=${{ steps.package-version.outputs.version }}
|
|
221
|
+
if [ "$TAG_VERSION" != "$PKG_VERSION" ]; then
|
|
222
|
+
echo "❌ Error: Git tag version (v$TAG_VERSION) 与 package.json 版本 ($PKG_VERSION) 不匹配"
|
|
223
|
+
exit 1
|
|
224
|
+
fi
|
|
225
|
+
echo "✅ Tag version matches package.json version"
|
|
226
|
+
|
|
227
|
+
- name: Install dependencies
|
|
228
|
+
run: npm ci
|
|
229
|
+
|
|
230
|
+
- name: Run pre-release AI documentation check
|
|
231
|
+
run: npm run docs:check:pre-release
|
|
232
|
+
|
|
233
|
+
- name: Run typecheck
|
|
234
|
+
run: npm run typecheck
|
|
235
|
+
|
|
236
|
+
- name: Run linter
|
|
237
|
+
run: npm run lint
|
|
238
|
+
|
|
239
|
+
- name: Run tests
|
|
240
|
+
run: npm test
|
|
241
|
+
|
|
242
|
+
- name: Build package
|
|
243
|
+
run: npm run build
|
|
244
|
+
|
|
245
|
+
- name: Validate package contents
|
|
246
|
+
run: npm run validate-pack
|
|
247
|
+
|
|
248
|
+
# 使用 OIDC Trusted Publishing 发布
|
|
249
|
+
# OIDC 通过 id-token: write 权限自动获取认证,不需要 NPM_TOKEN
|
|
250
|
+
- name: Publish to NPM
|
|
251
|
+
run: npm publish --access public --provenance
|
|
252
|
+
|
|
253
|
+
- name: Generate Release Notes
|
|
254
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
255
|
+
id: release-notes
|
|
256
|
+
run: |
|
|
257
|
+
VERSION="${{ steps.package-version.outputs.version }}"
|
|
258
|
+
|
|
259
|
+
# 从 CHANGELOG.md 提取当前版本的变更记录
|
|
260
|
+
if [ -f CHANGELOG.md ]; then
|
|
261
|
+
NOTES=$(awk "/^## \[$VERSION\]/,/^## \[/" CHANGELOG.md | head -n -1)
|
|
262
|
+
if [ -n "$NOTES" ]; then
|
|
263
|
+
echo "Extracted release notes from CHANGELOG.md"
|
|
264
|
+
else
|
|
265
|
+
NOTES="See [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md) for details."
|
|
266
|
+
fi
|
|
267
|
+
else
|
|
268
|
+
NOTES="See [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md) for details."
|
|
269
|
+
fi
|
|
270
|
+
|
|
271
|
+
# 转义特殊字符用于 GitHub Actions 输出
|
|
272
|
+
NOTES="${NOTES//'%'/'%25'}"
|
|
273
|
+
NOTES="${NOTES//$'\n'/'%0A'}"
|
|
274
|
+
NOTES="${NOTES//$'\r'/'%0D'}"
|
|
275
|
+
|
|
276
|
+
echo "notes<<EOF" >> $GITHUB_OUTPUT
|
|
277
|
+
echo "$NOTES" >> $GITHUB_OUTPUT
|
|
278
|
+
echo "EOF" >> $GITHUB_OUTPUT
|
|
279
|
+
|
|
280
|
+
- name: Create GitHub Release
|
|
281
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
282
|
+
uses: actions/create-release@v1
|
|
283
|
+
env:
|
|
284
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
285
|
+
with:
|
|
286
|
+
tag_name: ${{ github.ref }}
|
|
287
|
+
release_name: Release v${{ steps.package-version.outputs.version }}
|
|
288
|
+
draft: false
|
|
289
|
+
prerelease: ${{ contains(steps.package-version.outputs.version, '-') }}
|
|
290
|
+
body: |
|
|
291
|
+
${{ steps.release-notes.outputs.notes }}
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## Installation
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
npm install @mycodemap/mycodemap@${{ steps.package-version.outputs.version }}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## AI Documentation
|
|
302
|
+
|
|
303
|
+
This version includes updated AI-friendly documentation:
|
|
304
|
+
- [AI Guide](https://github.com/${{ github.repository }}/blob/main/AI_GUIDE.md)
|
|
305
|
+
- [llms.txt](https://github.com/${{ github.repository }}/blob/main/llms.txt)
|
|
306
|
+
```
|
|
98
307
|
|
|
99
308
|
## 🔍 验证发布
|
|
100
309
|
|
|
@@ -109,18 +318,49 @@ npm install -g @mycodemap/mycodemap
|
|
|
109
318
|
|
|
110
319
|
# 验证 CLI 版本
|
|
111
320
|
mycodemap --version
|
|
321
|
+
|
|
322
|
+
# 查看包详情
|
|
323
|
+
npm view @mycodemap/mycodemap
|
|
112
324
|
```
|
|
113
325
|
|
|
114
326
|
## 🐛 故障排查
|
|
115
327
|
|
|
328
|
+
### OIDC 发布失败
|
|
329
|
+
|
|
330
|
+
**现象**:
|
|
331
|
+
```
|
|
332
|
+
npm ERR! code E403
|
|
333
|
+
npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/@mycodemap%2fmycodemap
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**原因**:
|
|
337
|
+
1. NPM 端未正确配置 Trusted Publisher
|
|
338
|
+
2. `id-token: write` 权限未设置
|
|
339
|
+
3. 设置了 `NODE_AUTH_TOKEN` 环境变量干扰了 OIDC
|
|
340
|
+
|
|
341
|
+
**解决**:
|
|
342
|
+
1. 检查 NPM 配置: https://www.npmjs.com/package/@mycodemap/mycodemap/access
|
|
343
|
+
2. 确保 workflow 中有 `id-token: write` 权限
|
|
344
|
+
3. 确保没有设置 `NODE_AUTH_TOKEN` 环境变量
|
|
345
|
+
4. 确保没有设置 `NPM_TOKEN` secret
|
|
346
|
+
|
|
116
347
|
### 发布失败: "ENEEDAUTH"
|
|
117
348
|
|
|
118
|
-
**原因**:
|
|
349
|
+
**原因**: 虽然使用 OIDC,但可能配置了错误的认证方式
|
|
119
350
|
|
|
120
351
|
**解决**:
|
|
121
|
-
1. 检查
|
|
122
|
-
2.
|
|
123
|
-
3. 确认 token
|
|
352
|
+
1. 检查 workflow 中是否设置了 `NODE_AUTH_TOKEN`(不应该设置)
|
|
353
|
+
2. 检查 GitHub Secrets 中是否意外设置了 `NPM_TOKEN`(应该删除)
|
|
354
|
+
3. 确认 `id-token: write` 权限已正确配置
|
|
355
|
+
|
|
356
|
+
### 发布失败: "EOTP"
|
|
357
|
+
|
|
358
|
+
**原因**: 使用了传统的 NPM_TOKEN 方式,且账号启用了 2FA
|
|
359
|
+
|
|
360
|
+
**解决**:
|
|
361
|
+
- 这是使用 OIDC 的场景,不应该出现此错误
|
|
362
|
+
- 检查是否正确配置了 OIDC Trusted Publishing
|
|
363
|
+
- 检查是否意外设置了 NPM_TOKEN
|
|
124
364
|
|
|
125
365
|
### 发布失败: "403 Forbidden"
|
|
126
366
|
|
|
@@ -129,6 +369,7 @@ mycodemap --version
|
|
|
129
369
|
**解决**:
|
|
130
370
|
1. 确认你是该 npm 包的维护者
|
|
131
371
|
2. 如果是 scoped package (@mycodemap/xxx),确认已设置 `--access public`
|
|
372
|
+
3. 确认 NPM 端已添加 GitHub Actions 作为 Trusted Publisher
|
|
132
373
|
|
|
133
374
|
### 发布失败: "版本已存在"
|
|
134
375
|
|
|
@@ -147,16 +388,85 @@ mycodemap --version
|
|
|
147
388
|
2. 检查 `.github/workflows/publish.yml` 是否存在
|
|
148
389
|
3. 查看 Actions 日志排查问题
|
|
149
390
|
|
|
391
|
+
### npm warn publish "bin[xxx]" script name was invalid
|
|
392
|
+
|
|
393
|
+
**原因**: package.json 中的 bin 字段格式问题
|
|
394
|
+
|
|
395
|
+
**解决**:
|
|
396
|
+
```bash
|
|
397
|
+
# 运行 npm pkg fix 自动修复
|
|
398
|
+
npm pkg fix
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### 版本不匹配错误
|
|
402
|
+
|
|
403
|
+
**原因**: Git tag 版本与 package.json 版本不一致
|
|
404
|
+
|
|
405
|
+
**解决**:
|
|
406
|
+
```bash
|
|
407
|
+
# 检查当前版本
|
|
408
|
+
cat package.json | grep '"version"'
|
|
409
|
+
|
|
410
|
+
# 检查 git tags
|
|
411
|
+
git tag -l | sort -V
|
|
412
|
+
|
|
413
|
+
# 确保 tag 与 package.json 版本一致
|
|
414
|
+
# 例如: package.json 为 0.2.0,则 tag 应为 v0.2.0
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
### npm registry 配置错误
|
|
418
|
+
|
|
419
|
+
**现象**: `npm whoami` 失败或发布到错误 registry
|
|
420
|
+
|
|
421
|
+
**解决**:
|
|
422
|
+
```bash
|
|
423
|
+
# 检查当前 registry
|
|
424
|
+
npm config get registry
|
|
425
|
+
|
|
426
|
+
# 设置为 npm 官方 registry
|
|
427
|
+
npm config set registry https://registry.npmjs.org/
|
|
428
|
+
|
|
429
|
+
# 验证登录状态
|
|
430
|
+
npm whoami
|
|
431
|
+
```
|
|
432
|
+
|
|
150
433
|
## 📚 相关文件
|
|
151
434
|
|
|
152
435
|
| 文件 | 说明 |
|
|
153
436
|
|------|------|
|
|
154
437
|
| `.github/workflows/publish.yml` | GitHub Actions 发布工作流 |
|
|
155
438
|
| `scripts/release.sh` | 本地发布助手脚本 |
|
|
156
|
-
| `
|
|
439
|
+
| `scripts/validate-pack.js` | 打包验证脚本 |
|
|
440
|
+
| `scripts/pre-release-check.js` | 发布前 AI 文档检查脚本 |
|
|
441
|
+
| `package.json` | 版本号定义和发布配置 |
|
|
157
442
|
| `CHANGELOG.md` | 版本变更记录 |
|
|
443
|
+
| `tsconfig.json` | TypeScript 编译配置 |
|
|
444
|
+
|
|
445
|
+
## 📝 发布记录模板
|
|
446
|
+
|
|
447
|
+
发布后建议在 GitHub 创建 Release,格式如下:
|
|
448
|
+
|
|
449
|
+
```markdown
|
|
450
|
+
## Changes
|
|
451
|
+
|
|
452
|
+
### Features
|
|
453
|
+
- 新增 xxx 功能
|
|
454
|
+
|
|
455
|
+
### Fixes
|
|
456
|
+
- 修复 xxx 问题
|
|
457
|
+
|
|
458
|
+
### Improvements
|
|
459
|
+
- 优化 xxx 性能
|
|
460
|
+
|
|
461
|
+
## Installation
|
|
462
|
+
|
|
463
|
+
```bash
|
|
464
|
+
npm install @mycodemap/mycodemap@0.2.0
|
|
465
|
+
```
|
|
466
|
+
```
|
|
158
467
|
|
|
159
468
|
## 🔗 相关链接
|
|
160
469
|
|
|
161
470
|
- NPM 包页面: https://www.npmjs.com/package/@mycodemap/mycodemap
|
|
162
471
|
- GitHub Actions: https://github.com/yuanyuanyuan/mycodemap/actions
|
|
472
|
+
- 版本历史: https://www.npmjs.com/package/@mycodemap/mycodemap?activeTab=versions
|
|
@@ -358,6 +358,40 @@ mycodemap export json -o ./output.json # 指定输出
|
|
|
358
358
|
|
|
359
359
|
---
|
|
360
360
|
|
|
361
|
+
### ship - 一键智能发布
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
mycodemap ship # 完整发布流程
|
|
365
|
+
mycodemap ship --dry-run # 仅分析,不发布
|
|
366
|
+
mycodemap ship --verbose # 显示详细输出
|
|
367
|
+
mycodemap ship --yes # 置信度 60-75 时自动确认
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
| 选项 | 说明 | 默认值 |
|
|
371
|
+
|------|------|--------|
|
|
372
|
+
| `--dry-run` | 仅分析变更,不执行发布 | `false` |
|
|
373
|
+
| `--verbose` | 显示详细输出 | `false` |
|
|
374
|
+
| `--yes, -y` | 置信度 60-75 时自动确认 | `false` |
|
|
375
|
+
|
|
376
|
+
**发布流程:**
|
|
377
|
+
1. **ANALYZE** - 分析 git commits,检测变更类型
|
|
378
|
+
2. **VERSION** - 基于 conventional commits 计算版本号
|
|
379
|
+
3. **CHECK** - mustPass/shouldPass 检查 + 置信度评分
|
|
380
|
+
4. **PUBLISH** - npm 发布 + git tag
|
|
381
|
+
5. **MONITOR** - GitHub Actions CI 状态监控
|
|
382
|
+
|
|
383
|
+
**置信度判定:**
|
|
384
|
+
- `>= 75`: 自动发布
|
|
385
|
+
- `60-75`: 需确认
|
|
386
|
+
- `< 60`: 阻止发布
|
|
387
|
+
|
|
388
|
+
**前置条件:**
|
|
389
|
+
- 工作区干净
|
|
390
|
+
- 在 main/master 分支
|
|
391
|
+
- 所有检查通过
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
361
395
|
## 全局选项
|
|
362
396
|
|
|
363
397
|
所有命令支持:
|