@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
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
# 发布前检查清单 (Pre-Release Checklist)
|
|
2
|
+
|
|
3
|
+
> 本文档定义了每次发布前必须通过的强制护栏规则。
|
|
4
|
+
>
|
|
5
|
+
> **自动执行**: `npm run docs:check:pre-release`
|
|
6
|
+
> **CI 集成**: 发布工作流会自动运行此检查
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 🚨 关键原则
|
|
11
|
+
|
|
12
|
+
**任何发布都必须满足以下原则:**
|
|
13
|
+
|
|
14
|
+
1. **AI友好文档完整性** - 所有AI文档必须存在且符合标准
|
|
15
|
+
2. **版本一致性** - 所有文件中的版本号必须一致
|
|
16
|
+
3. **llms.txt 标准** - 必须符合 llmstxt.org 规范
|
|
17
|
+
4. **交叉引用有效性** - 所有内部链接必须有效
|
|
18
|
+
5. **CHANGELOG 同步** - 必须包含当前版本的更新记录
|
|
19
|
+
6. **OIDC 配置** - 使用 Trusted Publishing 方式发布
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 📋 检查项详情 (共10项)
|
|
24
|
+
|
|
25
|
+
### 1. AI 文档完整性检查
|
|
26
|
+
|
|
27
|
+
**目标**: 确保所有必需的AI文档存在且大小在合理范围内
|
|
28
|
+
|
|
29
|
+
**检查文件**:
|
|
30
|
+
| 文件 | 必需 | 最小大小 | 最大大小 |
|
|
31
|
+
|------|------|---------|---------|
|
|
32
|
+
| `llms.txt` | ✅ | 100B | 10KB |
|
|
33
|
+
| `AI_GUIDE.md` | ✅ | 1KB | 50KB |
|
|
34
|
+
| `AI_DISCOVERY.md` | ✅ | 1KB | 50KB |
|
|
35
|
+
| `ai-document-index.yaml` | ✅ | 500B | 50KB |
|
|
36
|
+
| `docs/ai-guide/README.md` | ✅ | 500B | 30KB |
|
|
37
|
+
| `docs/ai-guide/QUICKSTART.md` | ✅ | 1KB | 50KB |
|
|
38
|
+
| `docs/ai-guide/COMMANDS.md` | ✅ | 2KB | 100KB |
|
|
39
|
+
| `docs/ai-guide/OUTPUT.md` | ✅ | 2KB | 100KB |
|
|
40
|
+
| `docs/ai-guide/PATTERNS.md` | ✅ | 2KB | 100KB |
|
|
41
|
+
| `docs/ai-guide/PROMPTS.md` | ✅ | 2KB | 100KB |
|
|
42
|
+
| `docs/ai-guide/INTEGRATION.md` | ✅ | 2KB | 150KB |
|
|
43
|
+
|
|
44
|
+
**限制**:
|
|
45
|
+
- 单个文件最大 150KB
|
|
46
|
+
- 所有AI文档总计最大 500KB
|
|
47
|
+
|
|
48
|
+
### 2. llms.txt 标准格式检查
|
|
49
|
+
|
|
50
|
+
**目标**: 确保符合 [llmstxt.org](https://llmstxt.org/) 标准
|
|
51
|
+
|
|
52
|
+
**必需元素**:
|
|
53
|
+
- [ ] H1 标题 (`# CodeMap`)
|
|
54
|
+
- [ ] 摘要引用 (`> CodeMap 是...`)
|
|
55
|
+
- [ ] 文档章节 (`## 文档` 或 `## Docs`)
|
|
56
|
+
- [ ] 链接格式 (`[Title](./path.md)`)
|
|
57
|
+
|
|
58
|
+
**推荐元素**:
|
|
59
|
+
- [ ] 快速开始章节
|
|
60
|
+
- [ ] 完整文档章节
|
|
61
|
+
- [ ] 可选章节
|
|
62
|
+
|
|
63
|
+
**Token 效率**:
|
|
64
|
+
- llms.txt 估算 token 数必须 < 5,000
|
|
65
|
+
|
|
66
|
+
### 3. 版本一致性检查
|
|
67
|
+
|
|
68
|
+
**目标**: 确保所有文件中的版本号一致
|
|
69
|
+
|
|
70
|
+
**检查文件**:
|
|
71
|
+
- `package.json` - `version` 字段
|
|
72
|
+
- `llms.txt` - 文中版本号
|
|
73
|
+
- `ai-document-index.yaml` - `project.version`
|
|
74
|
+
- `AI_GUIDE.md` - 文中版本号
|
|
75
|
+
- `AI_DISCOVERY.md` - 文中版本号 (可选)
|
|
76
|
+
|
|
77
|
+
**要求**:
|
|
78
|
+
- 所有文件版本号必须完全一致
|
|
79
|
+
- 必须符合语义化版本规范 (`x.x.x`)
|
|
80
|
+
- 预发布版本可包含后缀 (`0.2.0-beta.1`)
|
|
81
|
+
|
|
82
|
+
**版本同步清单**:
|
|
83
|
+
|
|
84
|
+
更新版本号时必须同步以下文件:
|
|
85
|
+
- [ ] `package.json` - 主版本号
|
|
86
|
+
- [ ] `llms.txt` - 文中版本声明
|
|
87
|
+
- [ ] `ai-document-index.yaml` - `project.version`
|
|
88
|
+
- [ ] `AI_GUIDE.md` - 页眉版本信息
|
|
89
|
+
- [ ] `AI_DISCOVERY.md` - 页眉版本信息
|
|
90
|
+
- [ ] `CHANGELOG.md` - 版本条目
|
|
91
|
+
|
|
92
|
+
### 4. 交叉引用有效性检查
|
|
93
|
+
|
|
94
|
+
**目标**: 确保文档间的引用关系完整
|
|
95
|
+
|
|
96
|
+
**必需引用**:
|
|
97
|
+
| 源文件 | 必须引用 |
|
|
98
|
+
|--------|---------|
|
|
99
|
+
| `llms.txt` | `AI_GUIDE.md`, `ai-document-index.yaml` |
|
|
100
|
+
| `AI_GUIDE.md` | `AI_DISCOVERY.md`, `ai-document-index.yaml`, `docs/ai-guide/` |
|
|
101
|
+
| `README.md` | `AI_GUIDE.md` |
|
|
102
|
+
| `AGENTS.md` | AI 友好文档规范 |
|
|
103
|
+
| `CLAUDE.md` | `AI_GUIDE.md`, `docs/ai-guide/` |
|
|
104
|
+
|
|
105
|
+
**链接验证**:
|
|
106
|
+
- 所有内部链接必须指向存在的文件
|
|
107
|
+
- 锚点链接 (`#section`) 会被忽略
|
|
108
|
+
|
|
109
|
+
### 5. AI 友好性检查
|
|
110
|
+
|
|
111
|
+
**目标**: 确保 AI_GUIDE.md 符合 AI 阅读最佳实践
|
|
112
|
+
|
|
113
|
+
**检查项**:
|
|
114
|
+
- [ ] 层级标题 (`##`, `###`)
|
|
115
|
+
- [ ] 表格 (速查表)
|
|
116
|
+
- [ ] 代码块 (bash/typescript/json)
|
|
117
|
+
- [ ] TypeScript 接口定义
|
|
118
|
+
- [ ] 决策树/流程图
|
|
119
|
+
- [ ] 提示词模板
|
|
120
|
+
|
|
121
|
+
### 6. CHANGELOG 同步检查
|
|
122
|
+
|
|
123
|
+
**目标**: 确保 CHANGELOG 包含当前版本的更新记录
|
|
124
|
+
|
|
125
|
+
**要求**:
|
|
126
|
+
- 必须包含当前版本号的条目
|
|
127
|
+
- 推荐包含 AI 文档相关更新记录
|
|
128
|
+
|
|
129
|
+
**格式示例**:
|
|
130
|
+
```markdown
|
|
131
|
+
## [0.2.0] - 2026-03-17 - MVP3 Architecture Release
|
|
132
|
+
|
|
133
|
+
### 🐛 Bug Fixes
|
|
134
|
+
- ...
|
|
135
|
+
|
|
136
|
+
### 📚 Documentation
|
|
137
|
+
- ...
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 7. 发布必需文件检查
|
|
141
|
+
|
|
142
|
+
**目标**: 确保发布到 NPM/GitHub 所需的文件都存在
|
|
143
|
+
|
|
144
|
+
**必需文件**:
|
|
145
|
+
| 文件 | 用途 | 状态 |
|
|
146
|
+
|------|------|------|
|
|
147
|
+
| `CHANGELOG.md` | GitHub Release 引用 | 必需 |
|
|
148
|
+
| `LICENSE` | NPM 包许可证 | 必需 |
|
|
149
|
+
| `README.md` | NPM 包主页展示 | 必需 |
|
|
150
|
+
|
|
151
|
+
### 8. Git Tag 一致性检查
|
|
152
|
+
|
|
153
|
+
**目标**: 确保版本号与 git tag 一致
|
|
154
|
+
|
|
155
|
+
**检查项**:
|
|
156
|
+
- [ ] 本地 tag `v{x.x.x}` 是否存在
|
|
157
|
+
- [ ] Tag 是否指向当前 commit
|
|
158
|
+
- [ ] 远程 tag 是否已推送
|
|
159
|
+
- [ ] 当前分支是否为 main/master
|
|
160
|
+
|
|
161
|
+
**发布流程**:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# 方式1: 使用发布脚本(推荐)
|
|
165
|
+
./scripts/release.sh patch # patch/minor/major
|
|
166
|
+
|
|
167
|
+
# 方式2: 手动发布
|
|
168
|
+
# 1. 更新版本号
|
|
169
|
+
npm version patch # 自动创建 tag
|
|
170
|
+
|
|
171
|
+
# 2. 推送 tag
|
|
172
|
+
git push origin main --tags
|
|
173
|
+
|
|
174
|
+
# 3. GitHub Actions 自动完成:
|
|
175
|
+
# - 构建项目
|
|
176
|
+
# - 运行测试
|
|
177
|
+
# - 发布到 NPM (通过 OIDC)
|
|
178
|
+
# - 创建 GitHub Release
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Tag 命名规范**:
|
|
182
|
+
- 格式: `v{x.x.x}` (例如: `v0.2.0`)
|
|
183
|
+
- 必须带有 `v` 前缀
|
|
184
|
+
- 必须符合语义化版本规范
|
|
185
|
+
|
|
186
|
+
**GitHub Release**:
|
|
187
|
+
- 由 GitHub Actions 自动创建
|
|
188
|
+
- 基于 CHANGELOG.md 生成 release notes
|
|
189
|
+
- 包含预发布版本检测 (版本号包含 `-`)
|
|
190
|
+
|
|
191
|
+
### 9. OIDC 发布配置检查
|
|
192
|
+
|
|
193
|
+
**目标**: 确保使用 OIDC Trusted Publishing 方式发布
|
|
194
|
+
|
|
195
|
+
**配置要求**:
|
|
196
|
+
|
|
197
|
+
1. **NPM 端配置**:
|
|
198
|
+
- 访问 `https://www.npmjs.com/package/@mycodemap/mycodemap/access`
|
|
199
|
+
- 添加 GitHub Actions 作为 Trusted Publisher:
|
|
200
|
+
- GitHub Organization: `yuanyuanyuan`
|
|
201
|
+
- GitHub Repository: `mycodemap`
|
|
202
|
+
- Workflow Name: `publish.yml`
|
|
203
|
+
|
|
204
|
+
2. **GitHub Secrets 检查**:
|
|
205
|
+
- [ ] **不应设置** `NPM_TOKEN` secret
|
|
206
|
+
- [ ] 如果需要 Token 方式,使用 `NPM_TOKEN` 并确保是 **Automation** 类型
|
|
207
|
+
|
|
208
|
+
3. **Workflow 权限配置**:
|
|
209
|
+
```yaml
|
|
210
|
+
permissions:
|
|
211
|
+
contents: write # 用于创建 GitHub Release
|
|
212
|
+
id-token: write # 用于 OIDC trusted publishing (必需)
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
4. **发布命令**:
|
|
216
|
+
```yaml
|
|
217
|
+
# 正确:使用 OIDC
|
|
218
|
+
- name: Publish to NPM
|
|
219
|
+
run: npm publish --access public --provenance
|
|
220
|
+
|
|
221
|
+
# 错误:设置 NODE_AUTH_TOKEN 会干扰 OIDC
|
|
222
|
+
# env:
|
|
223
|
+
# NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**验证命令**:
|
|
227
|
+
```bash
|
|
228
|
+
# 检查是否设置了 NPM_TOKEN(OIDC 方式应该为空)
|
|
229
|
+
gh secret list | grep NPM_TOKEN
|
|
230
|
+
|
|
231
|
+
# 如果存在,删除它
|
|
232
|
+
gh secret remove NPM_TOKEN
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### 10. YAML 索引有效性检查
|
|
236
|
+
|
|
237
|
+
**目标**: 确保 `ai-document-index.yaml` 结构完整
|
|
238
|
+
|
|
239
|
+
**必需字段**:
|
|
240
|
+
- [ ] `project` 根字段
|
|
241
|
+
- [ ] `project.version` 版本号
|
|
242
|
+
- [ ] `documentation` 文档配置
|
|
243
|
+
- [ ] `documentation.ai_documents` AI文档列表
|
|
244
|
+
- [ ] `cli_commands` 命令索引
|
|
245
|
+
- [ ] `navigation` 导航配置
|
|
246
|
+
|
|
247
|
+
**引用验证**:
|
|
248
|
+
- YAML 中引用的所有文件路径必须存在
|
|
249
|
+
|
|
250
|
+
### 11. AGENTS.md 文档规范检查
|
|
251
|
+
|
|
252
|
+
**目标**: 确保 AGENTS.md 包含 AI 友好文档的强制要求
|
|
253
|
+
|
|
254
|
+
**必需章节**:
|
|
255
|
+
- [ ] AI 友好文档规范
|
|
256
|
+
- [ ] 结构清晰要求
|
|
257
|
+
- [ ] 决策树要求
|
|
258
|
+
- [ ] 速查表要求
|
|
259
|
+
- [ ] 代码可复现要求
|
|
260
|
+
- [ ] 类型定义要求
|
|
261
|
+
- [ ] 提示词模板要求
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## 🔧 使用方法
|
|
266
|
+
|
|
267
|
+
### 本地检查
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# 运行完整的发布前检查
|
|
271
|
+
npm run docs:check:pre-release
|
|
272
|
+
|
|
273
|
+
# 查看详细输出
|
|
274
|
+
npm run docs:check:pre-release 2>&1 | less
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### CI/CD 集成
|
|
278
|
+
|
|
279
|
+
发布工作流 (`.github/workflows/publish.yml`) 已自动集成此检查:
|
|
280
|
+
|
|
281
|
+
```yaml
|
|
282
|
+
- name: Run pre-release AI documentation check
|
|
283
|
+
run: npm run docs:check:pre-release
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### 发布前准备
|
|
287
|
+
|
|
288
|
+
**推荐方式: 使用发布脚本(一键完成)**
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
# 使用发布脚本(自动处理版本、tag、推送)
|
|
292
|
+
./scripts/release.sh patch # patch 版本 (0.2.0 -> 0.2.1)
|
|
293
|
+
./scripts/release.sh minor # minor 版本 (0.2.0 -> 0.3.0)
|
|
294
|
+
./scripts/release.sh major # major 版本 (0.2.0 -> 1.0.0)
|
|
295
|
+
./scripts/release.sh 0.3.0 # 指定具体版本
|
|
296
|
+
|
|
297
|
+
# 脚本会自动:
|
|
298
|
+
# 1. 运行 npm run check:all
|
|
299
|
+
# 2. 更新 package.json 版本
|
|
300
|
+
# 3. 创建 git commit
|
|
301
|
+
# 4. 创建 git tag
|
|
302
|
+
# 5. 推送到远程仓库
|
|
303
|
+
# 6. 触发 GitHub Actions 发布 (OIDC)
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**手动方式(需要更多控制时)**
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
# 1. 确保工作区干净
|
|
310
|
+
git status
|
|
311
|
+
|
|
312
|
+
# 2. 运行发布前检查
|
|
313
|
+
npm run docs:check:pre-release
|
|
314
|
+
|
|
315
|
+
# 3. 构建和测试
|
|
316
|
+
npm run check:all
|
|
317
|
+
|
|
318
|
+
# 4. 更新版本号(会自动创建 tag)
|
|
319
|
+
npm version patch|minor|major
|
|
320
|
+
|
|
321
|
+
# 5. 推送代码和 tag
|
|
322
|
+
git push origin main
|
|
323
|
+
git push origin --tags
|
|
324
|
+
|
|
325
|
+
# 6. GitHub Actions 自动完成发布
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## ❌ 常见问题
|
|
331
|
+
|
|
332
|
+
### OIDC 发布失败
|
|
333
|
+
|
|
334
|
+
**问题**: GitHub Actions 发布失败,提示 403 Forbidden
|
|
335
|
+
|
|
336
|
+
**解决**:
|
|
337
|
+
1. 检查 NPM 端是否配置了 Trusted Publisher:
|
|
338
|
+
- 访问 `https://www.npmjs.com/package/@mycodemap/mycodemap/access`
|
|
339
|
+
- 确认已添加 GitHub Actions 作为 Trusted Publisher
|
|
340
|
+
2. 检查 workflow 权限:
|
|
341
|
+
- 确保有 `id-token: write`
|
|
342
|
+
3. 检查是否意外设置了 `NPM_TOKEN`:
|
|
343
|
+
```bash
|
|
344
|
+
gh secret list | grep NPM_TOKEN
|
|
345
|
+
# 如果存在,删除:gh secret remove NPM_TOKEN
|
|
346
|
+
```
|
|
347
|
+
4. 检查 workflow 中是否设置了 `NODE_AUTH_TOKEN` 环境变量(不应该设置)
|
|
348
|
+
|
|
349
|
+
### 版本不一致
|
|
350
|
+
|
|
351
|
+
**问题**: 多个文件中的版本号不一致
|
|
352
|
+
|
|
353
|
+
**解决**:
|
|
354
|
+
```bash
|
|
355
|
+
# 统一更新所有文件中的版本号
|
|
356
|
+
VERSION="0.3.0"
|
|
357
|
+
|
|
358
|
+
# 更新 package.json
|
|
359
|
+
npm version $VERSION --no-git-tag-version
|
|
360
|
+
|
|
361
|
+
# 手动更新其他文件中的版本号
|
|
362
|
+
# - llms.txt
|
|
363
|
+
# - AI_GUIDE.md
|
|
364
|
+
# - AI_DISCOVERY.md
|
|
365
|
+
# - ai-document-index.yaml
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### llms.txt 格式错误
|
|
369
|
+
|
|
370
|
+
**问题**: llms.txt 不符合标准格式
|
|
371
|
+
|
|
372
|
+
**解决**:
|
|
373
|
+
参考 [llmstxt.org](https://llmstxt.org/) 规范,确保包含:
|
|
374
|
+
- H1 标题
|
|
375
|
+
- 摘要引用 (blockquote)
|
|
376
|
+
- 文档章节
|
|
377
|
+
|
|
378
|
+
### CHANGELOG 缺少条目
|
|
379
|
+
|
|
380
|
+
**问题**: CHANGELOG 缺少当前版本的条目
|
|
381
|
+
|
|
382
|
+
**解决**:
|
|
383
|
+
```bash
|
|
384
|
+
# 在 CHANGELOG.md 顶部添加条目
|
|
385
|
+
## [x.x.x] - $(date +%Y-%m-%d) - 简短描述
|
|
386
|
+
|
|
387
|
+
### 🐛 Bug Fixes
|
|
388
|
+
- ...
|
|
389
|
+
|
|
390
|
+
### ✨ Features
|
|
391
|
+
- ...
|
|
392
|
+
|
|
393
|
+
### 📚 Documentation
|
|
394
|
+
- ...
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## 📊 检查脚本架构
|
|
400
|
+
|
|
401
|
+
```
|
|
402
|
+
scripts/pre-release-check.js
|
|
403
|
+
├── checkRequiredFiles() # 检查文件存在性和大小
|
|
404
|
+
├── checkLlmsTxtStandards() # llms.txt 标准格式
|
|
405
|
+
├── checkVersionConsistency() # 版本一致性
|
|
406
|
+
├── checkCrossReferences() # 交叉引用有效性
|
|
407
|
+
├── checkAIFriendliness() # AI 友好性
|
|
408
|
+
├── checkChangelogSync() # CHANGELOG 同步
|
|
409
|
+
├── checkYamlIndex() # YAML 索引有效性
|
|
410
|
+
├── checkDocumentationStandards() # AGENTS.md 规范
|
|
411
|
+
├── checkReleaseFiles() # 发布必需文件
|
|
412
|
+
└── checkGitTag() # Git Tag 一致性
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## 📝 变更历史
|
|
418
|
+
|
|
419
|
+
| 日期 | 版本 | 变更 |
|
|
420
|
+
|------|------|------|
|
|
421
|
+
| 2026-03-23 | 0.2.0 | 添加 OIDC Trusted Publishing 配置说明 |
|
|
422
|
+
| 2026-03-22 | 0.2.0 | 初始发布,基于 AI_FRIENDLINESS_AUDIT.md |
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
*此文档是发布流程的强制要求,任何变更都需要同步更新检查脚本。*
|
package/package.json
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mycodemap/mycodemap",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"description": "TypeScript 代码地图工具 - 为 AI 辅助开发提供结构化上下文",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/yuanyuanyuan/mycodemap"
|
|
8
|
+
},
|
|
5
9
|
"main": "./dist/index.js",
|
|
6
10
|
"type": "module",
|
|
7
11
|
"exports": {
|
|
@@ -16,6 +20,7 @@
|
|
|
16
20
|
"dist/",
|
|
17
21
|
"docs/",
|
|
18
22
|
"examples/",
|
|
23
|
+
"scripts/",
|
|
19
24
|
"README.md",
|
|
20
25
|
"LICENSE",
|
|
21
26
|
"CHANGELOG.md",
|
|
@@ -27,12 +32,13 @@
|
|
|
27
32
|
"docs:check": "node scripts/validate-docs.js && node scripts/validate-ai-docs.js",
|
|
28
33
|
"docs:check:human": "node scripts/validate-docs.js",
|
|
29
34
|
"docs:check:ai": "node scripts/validate-ai-docs.js",
|
|
35
|
+
"docs:check:pre-release": "node scripts/pre-release-check.js",
|
|
30
36
|
"test": "vitest run",
|
|
31
37
|
"lint": "eslint src",
|
|
32
38
|
"typecheck": "tsc --noEmit",
|
|
33
39
|
"benchmark": "bash scripts/run-benchmark.sh",
|
|
34
40
|
"test:all": "npm run test && npm run benchmark",
|
|
35
|
-
"prepublishOnly": "npm run build && npm test",
|
|
41
|
+
"prepublishOnly": "npm run docs:check:pre-release && npm run build && npm test",
|
|
36
42
|
"validate-pack": "node scripts/validate-pack.js",
|
|
37
43
|
"release": "./scripts/release.sh",
|
|
38
44
|
"check:all": "npm run typecheck && npm run lint && npm test && npm run docs:check",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Commit-msg hook: 验证 Commit 消息格式
|
|
3
|
+
|
|
4
|
+
# 获取 commit message 文件路径
|
|
5
|
+
COMMIT_MSG_FILE=$1
|
|
6
|
+
COMMIT_MSG=$(cat "$COMMIT_MSG_FILE")
|
|
7
|
+
|
|
8
|
+
# 定义有效的 TAG
|
|
9
|
+
VALID_TAGS="feat fix refactor docs chore test style perf ci build revert"
|
|
10
|
+
|
|
11
|
+
# 检查是否以 [TAG] 格式开头
|
|
12
|
+
if ! echo "$COMMIT_MSG" | grep -qE '^\[[a-z]+\]'; then
|
|
13
|
+
echo "❌ Commit message must start with a valid tag."
|
|
14
|
+
echo " Expected format: [TAG] message"
|
|
15
|
+
echo " Valid tags: $VALID_TAGS"
|
|
16
|
+
echo ""
|
|
17
|
+
echo " Example: [feat] add new feature"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
# 提取 TAG 并验证
|
|
22
|
+
TAG=$(echo "$COMMIT_MSG" | sed -E 's/^\[([a-z]+)\].*/\1/')
|
|
23
|
+
|
|
24
|
+
if ! echo "$VALID_TAGS" | grep -qw "$TAG"; then
|
|
25
|
+
echo "❌ Invalid tag: [$TAG]"
|
|
26
|
+
echo " Valid tags: $VALID_TAGS"
|
|
27
|
+
exit 1
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
echo "✅ Commit message validated"
|
|
31
|
+
exit 0
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Pre-commit hook: 验证文件头注释
|
|
3
|
+
|
|
4
|
+
echo "🔍 Checking file headers..."
|
|
5
|
+
|
|
6
|
+
# 获取 node_modules 的路径
|
|
7
|
+
NODE_PATH=$(pwd)/node_modules
|
|
8
|
+
|
|
9
|
+
# 检查是否安装了必要的依赖
|
|
10
|
+
if [ ! -f "$NODE_PATH/.bin/tsc" ]; then
|
|
11
|
+
echo "⚠️ TypeScript not found, skipping header check"
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
# 扫描源代码目录
|
|
16
|
+
SRC_DIR="src"
|
|
17
|
+
|
|
18
|
+
# 定义需要检查的文件扩展名
|
|
19
|
+
EXTENSIONS="ts tsx js jsx mjs cjs"
|
|
20
|
+
|
|
21
|
+
# 统计变量
|
|
22
|
+
TOTAL=0
|
|
23
|
+
INVALID=0
|
|
24
|
+
|
|
25
|
+
for ext in $EXTENSIONS; do
|
|
26
|
+
# 查找所有匹配的文件,排除 node_modules, dist, test 等目录
|
|
27
|
+
FILES=$(find "$SRC_DIR" -type f -name "*.$ext" 2>/dev/null | grep -v node_modules | grep -v dist | grep -v __tests__ | grep -v "\.test\." | grep -v "\.spec\.")
|
|
28
|
+
|
|
29
|
+
for file in $FILES; do
|
|
30
|
+
TOTAL=$((TOTAL + 1))
|
|
31
|
+
|
|
32
|
+
# 检查文件头是否包含 [META] 或 [WHY]
|
|
33
|
+
if ! head -n 20 "$file" | grep -qi '\[META\]\|\[WHY\]'; then
|
|
34
|
+
echo "❌ E0008: $file - Missing [META] or [WHY] comment"
|
|
35
|
+
INVALID=$((INVALID + 1))
|
|
36
|
+
fi
|
|
37
|
+
done
|
|
38
|
+
done
|
|
39
|
+
|
|
40
|
+
echo ""
|
|
41
|
+
echo "Total files checked: $TOTAL"
|
|
42
|
+
echo "Invalid files: $INVALID"
|
|
43
|
+
|
|
44
|
+
if [ $INVALID -gt 0 ]; then
|
|
45
|
+
echo ""
|
|
46
|
+
echo "❌ File header check failed. Please add [META] or [WHY] comment to the files above."
|
|
47
|
+
echo " Example:"
|
|
48
|
+
echo " /**"
|
|
49
|
+
echo " * [META] Description of this file"
|
|
50
|
+
echo " */"
|
|
51
|
+
exit 1
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
echo "✅ All file headers are valid"
|
|
55
|
+
exit 0
|