Skip to content

Commit 6a6218c

Browse files
CoderJackZhuclaude
andcommitted
docs: add release guide for VS Code and Obsidian publishing
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent bcfe385 commit 6a6218c

1 file changed

Lines changed: 211 additions & 0 deletions

File tree

docs/发布指南.md

Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
# MindDoc 发布指南
2+
3+
## 概述
4+
5+
MindDoc 有两个发布渠道,各自独立版本管理:
6+
7+
| 平台 | 包名 | Tag 格式 | 发布目标 |
8+
|------|------|----------|----------|
9+
| VS Code | `vscode-minddoc` | `vscode-v0.1.0` | VS Code Marketplace |
10+
| Obsidian | `minddoc` | `obsidian-v0.1.0` | Obsidian 社区插件 |
11+
12+
---
13+
14+
## 前置准备(只需做一次)
15+
16+
### VS Code Marketplace
17+
18+
1. **注册 Azure DevOps 组织**
19+
- 访问 https://dev.azure.com
20+
- 创建一个组织(Organization)
21+
22+
2. **创建 Personal Access Token (PAT)**
23+
- 进入组织 → User Settings → Personal Access Tokens
24+
- Name: `vsce-publish`
25+
- Scopes: 选择 **Marketplace > Manage**(勾选所有 Marketplace 权限)
26+
- 记录生成的 token
27+
28+
3. **创建 Publisher**
29+
- 访问 https://marketplace.visualstudio.com/manage
30+
- Create Publisher → ID 填 `minddoc`(必须与 package.json 中的 `publisher` 字段一致)
31+
32+
4. **配置 GitHub Secrets**
33+
- 仓库 Settings → Secrets and variables → Actions
34+
- 添加 `VSCE_PAT`,值为上面创建的 PAT
35+
36+
5. **本地登录(可选,用于手动发布)**
37+
```bash
38+
npm install -g @vscode/vsce
39+
vsce login minddoc
40+
# 输入 PAT
41+
```
42+
43+
### Obsidian 社区插件
44+
45+
1. **确保仓库公开**https://github.com/CoderJackZhu/MindDoc 设为 Public
46+
47+
2. **首次提交到社区插件列表**
48+
```bash
49+
# Fork https://github.com/obsidianmd/obsidian-releases
50+
# 编辑 community-plugins.json,在数组末尾添加:
51+
```
52+
```json
53+
{
54+
"id": "minddoc",
55+
"name": "MindDoc",
56+
"author": "Jack Zhu",
57+
"description": "Markdown-first structured outline editor with mind map view",
58+
"repo": "CoderJackZhu/MindDoc"
59+
}
60+
```
61+
```bash
62+
# 提交 PR 到 obsidian-releases 仓库
63+
# 审核周期:1-4 周
64+
```
65+
66+
3. **审核要求**
67+
- 不使用 `eval()` 或动态代码加载
68+
- 无未说明的网络请求
69+
- README 有使用说明
70+
- manifest.json 中 minAppVersion 合理
71+
72+
---
73+
74+
## 日常发布流程
75+
76+
### 发布 VS Code 扩展
77+
78+
```bash
79+
# 1. 确保代码就绪
80+
pnpm build
81+
pnpm test
82+
83+
# 2. 更新版本号(自动修改 package.json)
84+
pnpm release:vscode 0.2.0
85+
86+
# 3. 提交并打 tag
87+
git add -A
88+
git commit -m "release(vscode): v0.2.0"
89+
git tag vscode-v0.2.0
90+
91+
# 4. 推送(CI 自动发布到 Marketplace)
92+
git push origin main vscode-v0.2.0
93+
```
94+
95+
**手动发布(备用):**
96+
```bash
97+
cd packages/vscode
98+
pnpm build
99+
vsce publish --no-dependencies
100+
```
101+
102+
**本地测试 VSIX:**
103+
```bash
104+
cd packages/vscode
105+
vsce package --no-dependencies
106+
# 产出 vscode-minddoc-x.x.x.vsix
107+
code --install-extension vscode-minddoc-0.2.0.vsix
108+
```
109+
110+
### 发布 Obsidian 插件
111+
112+
```bash
113+
# 1. 确保代码就绪
114+
pnpm build
115+
pnpm test
116+
117+
# 2. 更新版本号(自动修改 manifest.json + versions.json + package.json)
118+
pnpm release:obsidian 0.2.0
119+
120+
# 3. 提交并打 tag
121+
git add -A
122+
git commit -m "release(obsidian): v0.2.0"
123+
git tag obsidian-v0.2.0
124+
125+
# 4. 推送(CI 自动创建 GitHub Release 并上传构建产物)
126+
git push origin main obsidian-v0.2.0
127+
```
128+
129+
GitHub Release 会自动包含:`main.js``manifest.json``styles.css`
130+
131+
Obsidian 客户端会自动检测新 Release 并提示用户更新。
132+
133+
**本地测试:**
134+
```bash
135+
pnpm --filter @minddoc/obsidian build
136+
137+
# 将产物复制到测试 vault
138+
cp packages/obsidian/main.js <vault>/.obsidian/plugins/minddoc/
139+
cp packages/obsidian/manifest.json <vault>/.obsidian/plugins/minddoc/
140+
cp packages/obsidian/styles.css <vault>/.obsidian/plugins/minddoc/
141+
142+
# 在 Obsidian 中重载插件
143+
```
144+
145+
---
146+
147+
## 同时发布两个平台
148+
149+
如果两个平台同时更新:
150+
151+
```bash
152+
pnpm build && pnpm test
153+
154+
pnpm release:vscode 0.2.0
155+
pnpm release:obsidian 0.2.0
156+
157+
git add -A
158+
git commit -m "release: v0.2.0 (vscode + obsidian)"
159+
git tag vscode-v0.2.0
160+
git tag obsidian-v0.2.0
161+
162+
git push origin main vscode-v0.2.0 obsidian-v0.2.0
163+
```
164+
165+
---
166+
167+
## 版本号约定
168+
169+
遵循 [Semantic Versioning](https://semver.org/)
170+
171+
- `0.x.y` — 早期开发阶段,API 可能变动
172+
- patch (0.1.1) — bug 修复
173+
- minor (0.2.0) — 新功能,向后兼容
174+
- major (1.0.0) — 稳定版,API 不再随意变动
175+
176+
两个平台版本号独立管理,可以不同步。
177+
178+
---
179+
180+
## CI/CD 工作流说明
181+
182+
| 文件 | 触发条件 | 作用 |
183+
|------|----------|------|
184+
| `.github/workflows/ci.yml` | push/PR to main | typecheck + test + build |
185+
| `.github/workflows/release-vscode.yml` | tag `vscode-v*` | 构建并发布到 Marketplace |
186+
| `.github/workflows/release-obsidian.yml` | tag `obsidian-v*` | 构建并创建 GitHub Release |
187+
188+
---
189+
190+
## 故障排除
191+
192+
### vsce publish 失败
193+
194+
- **"Personal Access Token has expired"** → 重新创建 PAT 并更新 GitHub Secret
195+
- **"Publisher 'minddoc' not found"** → 去 https://marketplace.visualstudio.com/manage 创建
196+
- **依赖报错** → 确保使用 `--no-dependencies`(所有依赖已被 esbuild 打包进 dist)
197+
198+
### Obsidian Release 未被检测
199+
200+
- 确认 tag 格式正确:`obsidian-v0.2.0`
201+
- 确认 Release 中包含 `main.js``manifest.json`
202+
- 确认 `manifest.json` 中 version 与 tag 一致
203+
204+
### 图标问题
205+
206+
VS Code Marketplace 要求:
207+
- 格式:PNG
208+
- 尺寸:128x128 像素
209+
- 路径:`packages/vscode/assets/icon.png`
210+
211+
当前使用占位图标,正式发布前替换为设计稿。

0 commit comments

Comments
 (0)