ccman 2.1.2 → 2.1.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/LICENSE +21 -0
- package/README.md +308 -258
- package/README_en.md +444 -0
- package/dist/cli.js +213 -33
- package/dist/cli.js.map +1 -1
- package/dist/config/default-providers.d.ts +34 -0
- package/dist/config/default-providers.d.ts.map +1 -0
- package/dist/config/default-providers.js +96 -0
- package/dist/config/default-providers.js.map +1 -0
- package/dist/config/static-env.d.ts +1 -1
- package/dist/config/static-env.js +1 -1
- package/dist/core/ClaudeConfigManager.d.ts +5 -1
- package/dist/core/ClaudeConfigManager.d.ts.map +1 -1
- package/dist/core/ClaudeConfigManager.js +19 -3
- package/dist/core/ClaudeConfigManager.js.map +1 -1
- package/dist/providers/ProviderManager.d.ts.map +1 -1
- package/dist/providers/ProviderManager.js +7 -8
- package/dist/providers/ProviderManager.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +24 -3
- package/.editorconfig +0 -15
- package/.env.development +0 -3
- package/.env.production +0 -3
- package/.eslintrc.js +0 -28
- package/.github/workflows/release.yml +0 -99
- package/.prettierrc +0 -10
- package/CLAUDE.md +0 -276
- package/README_zh.md +0 -394
- package/dev-test.sh +0 -40
- package/docs/npm-publish-guide.md +0 -71
- package/docs/release-guide.md +0 -144
- package/docs/scripts-guide.md +0 -221
- package/docs/version-management.md +0 -64
- package/jest.config.js +0 -22
- package/release-temp/README.md +0 -394
- package/release-temp/package.json +0 -61
- package/scripts/build-env.js +0 -75
- package/scripts/modules/check-uncommitted.sh +0 -109
- package/scripts/modules/create-tag.sh +0 -279
- package/scripts/modules/monitor-release.sh +0 -296
- package/scripts/modules/version-bump.sh +0 -262
- package/scripts/publish-local.sh +0 -91
- package/scripts/quick-release.sh +0 -100
- package/scripts/release.sh +0 -430
- package/scripts/smart-release-v3.sh +0 -283
- package/scripts/smart-release.sh +0 -322
- package/src/cli.ts +0 -598
- package/src/commands/lang.ts +0 -105
- package/src/core/CCMConfigManager.ts +0 -259
- package/src/core/ClaudeConfigManager.ts +0 -123
- package/src/i18n/LanguageManager.ts +0 -169
- package/src/i18n/messages.ts +0 -233
- package/src/index.ts +0 -4
- package/src/providers/ProviderManager.ts +0 -414
- package/src/types/index.ts +0 -100
- package/src/utils/env-config.ts +0 -53
- package/src/utils/version.ts +0 -16
- package/tsconfig.json +0 -25
package/README_zh.md
DELETED
|
@@ -1,394 +0,0 @@
|
|
|
1
|
-
# CCM - Claude Code Manager v2.0
|
|
2
|
-
|
|
3
|
-
基于 TypeScript 的命令行工具,通过**直接 settings.json 集成**和**智能语言支持**管理多个 Claude Code API 供应商配置。
|
|
4
|
-
|
|
5
|
-
> [English Documentation](./README.md) | **中文文档**
|
|
6
|
-
|
|
7
|
-
## ✨ v2.0 新特性
|
|
8
|
-
|
|
9
|
-
🌍 **智能语言支持** - 自动检测系统语言或引导首次运行设置
|
|
10
|
-
🔧 **直接 Claude 集成** - 直接修改 `~/.claude/settings.json`,无需 shell 变量
|
|
11
|
-
📁 **供应商管理** - 存储和切换多个 API 供应商配置
|
|
12
|
-
🎯 **交互式菜单系统** - 支持连续操作的导航选项
|
|
13
|
-
⚡ **零配置体验** - 开箱即用的智能默认设置
|
|
14
|
-
|
|
15
|
-
## 🚀 快速开始
|
|
16
|
-
|
|
17
|
-
### 安装
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
# 从 NPM 安装
|
|
21
|
-
npm install -g ccman
|
|
22
|
-
|
|
23
|
-
# 或者开发环境安装依赖
|
|
24
|
-
npm install && npm run build
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### 首次运行体验
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
# 启动 CCM(首次运行)
|
|
31
|
-
ccman
|
|
32
|
-
|
|
33
|
-
🌍 Welcome to CCM! / 欢迎使用 CCM!
|
|
34
|
-
|
|
35
|
-
This is your first time running CCM.
|
|
36
|
-
这是您首次运行 CCM。
|
|
37
|
-
|
|
38
|
-
? Please choose your preferred language:
|
|
39
|
-
? 请选择您偏好的语言:
|
|
40
|
-
❯ 🇨🇳 中文 (Chinese)
|
|
41
|
-
🇺🇸 English
|
|
42
|
-
🌐 基于系统自动检测 (Auto-detect based on system)
|
|
43
|
-
|
|
44
|
-
✓ 语言已设置为中文
|
|
45
|
-
✓ 您可以稍后使用以下命令更改:ccman lang set <zh|en|auto>
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### 基本用法
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
# 交互式主菜单(推荐)
|
|
52
|
-
ccman
|
|
53
|
-
|
|
54
|
-
# 列出所有供应商
|
|
55
|
-
ccman ls
|
|
56
|
-
|
|
57
|
-
# 直接添加供应商
|
|
58
|
-
ccman add <id> <name> <baseUrl> [apiKey]
|
|
59
|
-
|
|
60
|
-
# 切换供应商
|
|
61
|
-
ccman use <id>
|
|
62
|
-
|
|
63
|
-
# 删除供应商
|
|
64
|
-
ccman rm <id>
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## 🌐 语言管理
|
|
68
|
-
|
|
69
|
-
### 语言命令
|
|
70
|
-
```bash
|
|
71
|
-
ccman lang # 显示当前语言设置
|
|
72
|
-
ccman lang set zh # 设置为中文
|
|
73
|
-
ccman lang set en # 设置为英文
|
|
74
|
-
ccman lang set auto # 基于系统自动检测
|
|
75
|
-
ccman lang reset # 重置为首次运行状态
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 支持的语言
|
|
79
|
-
- **中文 (zh)** - 完整中文界面
|
|
80
|
-
- **英文 (en)** - Full English interface
|
|
81
|
-
- **自动检测** - 基于系统 `LANG` 环境变量
|
|
82
|
-
|
|
83
|
-
### 语言检测逻辑
|
|
84
|
-
- 英文环境 (`en-*`) → 英文界面
|
|
85
|
-
- 其他环境(包括 `zh-*`、未设置等)→ 中文界面
|
|
86
|
-
- 随时可手动覆盖
|
|
87
|
-
|
|
88
|
-
## 📖 命令参考
|
|
89
|
-
|
|
90
|
-
### 核心供应商管理
|
|
91
|
-
```bash
|
|
92
|
-
ccman # 交互式菜单(默认)
|
|
93
|
-
ccman add <id> <name> <url> [key] # 添加新供应商
|
|
94
|
-
ccman use <id> # 切换到供应商
|
|
95
|
-
ccman ls # 列出所有供应商
|
|
96
|
-
ccman ls --current # 显示当前供应商详情
|
|
97
|
-
ccman ls --brief # 简洁供应商列表
|
|
98
|
-
ccman rm <id> # 删除供应商
|
|
99
|
-
ccman clear # 删除所有供应商(危险操作)
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### 语言管理
|
|
103
|
-
```bash
|
|
104
|
-
ccman lang # 显示当前语言
|
|
105
|
-
ccman lang set <zh|en|auto> # 设置语言偏好
|
|
106
|
-
ccman lang reset # 重置为首次运行状态
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## 🎯 交互式体验
|
|
110
|
-
|
|
111
|
-
### 主菜单导航
|
|
112
|
-
```bash
|
|
113
|
-
$ ccman
|
|
114
|
-
|
|
115
|
-
? 您想要执行什么操作?
|
|
116
|
-
❯ 切换供应商
|
|
117
|
-
添加新供应商
|
|
118
|
-
更新供应商
|
|
119
|
-
删除供应商
|
|
120
|
-
显示详细状态
|
|
121
|
-
退出
|
|
122
|
-
|
|
123
|
-
# 每次操作后:
|
|
124
|
-
? 是否要执行其他操作? (Y/n)
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### 供应商添加流程
|
|
128
|
-
```bash
|
|
129
|
-
$ ccman add
|
|
130
|
-
|
|
131
|
-
? 供应商ID(唯一标识符): my-provider
|
|
132
|
-
? 供应商名称: 我的自定义API
|
|
133
|
-
? 描述: 我的自定义Claude API
|
|
134
|
-
? 基础URL: https://api.mycustom.com
|
|
135
|
-
? API密钥: ****************
|
|
136
|
-
|
|
137
|
-
✓ 供应商添加成功
|
|
138
|
-
? 将"我的自定义API"设为当前供应商? (Y/n)
|
|
139
|
-
✓ 供应商切换成功
|
|
140
|
-
Claude Code 配置已成功更新!
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
## 🔧 架构概览
|
|
144
|
-
|
|
145
|
-
### 直接 Claude 集成
|
|
146
|
-
CCM v2.0 直接修改您的 Claude Code 设置文件:
|
|
147
|
-
|
|
148
|
-
**修改前(CCM 管理)**:
|
|
149
|
-
```json
|
|
150
|
-
{
|
|
151
|
-
"env": {
|
|
152
|
-
"ANTHROPIC_AUTH_TOKEN": "old-token",
|
|
153
|
-
"ANTHROPIC_BASE_URL": "https://old-api.com"
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
**修改后(CCM 更新)**:
|
|
159
|
-
```json
|
|
160
|
-
{
|
|
161
|
-
"env": {
|
|
162
|
-
"ANTHROPIC_AUTH_TOKEN": "new-token",
|
|
163
|
-
"ANTHROPIC_BASE_URL": "https://new-api.com",
|
|
164
|
-
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1
|
|
165
|
-
},
|
|
166
|
-
"permissions": {
|
|
167
|
-
"allow": [],
|
|
168
|
-
"deny": []
|
|
169
|
-
},
|
|
170
|
-
"apiKeyHelper": "echo 'new-token'"
|
|
171
|
-
}
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### 供应商存储结构
|
|
175
|
-
供应商存储在 `~/.ccman/providers/`:
|
|
176
|
-
|
|
177
|
-
```
|
|
178
|
-
~/.ccman/
|
|
179
|
-
├── config.json # CCM 主配置
|
|
180
|
-
├── providers/ # 单独的供应商配置
|
|
181
|
-
│ ├── anthropic.json
|
|
182
|
-
│ ├── my-provider.json
|
|
183
|
-
│ └── staging.json
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### 配置合并
|
|
187
|
-
CCM 只更新 Claude 相关的键,保留您的现有设置:
|
|
188
|
-
- ✅ 保留:`mcpServers`、`model`、`customUserConfig` 等
|
|
189
|
-
- 🔄 更新:`env.ANTHROPIC_*`、`permissions`、`apiKeyHelper`
|
|
190
|
-
|
|
191
|
-
## 📊 供应商配置
|
|
192
|
-
|
|
193
|
-
### 供应商结构
|
|
194
|
-
```json
|
|
195
|
-
{
|
|
196
|
-
"name": "Anthropic Official",
|
|
197
|
-
"description": "Anthropic 官方 API 配置",
|
|
198
|
-
"config": {
|
|
199
|
-
"env": {
|
|
200
|
-
"ANTHROPIC_AUTH_TOKEN": "your-token",
|
|
201
|
-
"ANTHROPIC_BASE_URL": "https://api.anthropic.com",
|
|
202
|
-
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1
|
|
203
|
-
},
|
|
204
|
-
"permissions": { "allow": [], "deny": [] },
|
|
205
|
-
"apiKeyHelper": "echo 'your-token'"
|
|
206
|
-
},
|
|
207
|
-
"metadata": {
|
|
208
|
-
"createdAt": "2025-01-15T10:30:00.000Z",
|
|
209
|
-
"updatedAt": "2025-01-15T10:30:00.000Z",
|
|
210
|
-
"usageCount": 5
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### 主配置
|
|
216
|
-
```json
|
|
217
|
-
{
|
|
218
|
-
"currentProvider": "anthropic",
|
|
219
|
-
"claudeConfigPath": "/Users/user/.claude/settings.json",
|
|
220
|
-
"providers": {
|
|
221
|
-
"anthropic": {
|
|
222
|
-
"name": "Anthropic Official",
|
|
223
|
-
"configFile": "anthropic.json",
|
|
224
|
-
"lastUsed": "2025-01-15T10:30:00.000Z"
|
|
225
|
-
}
|
|
226
|
-
},
|
|
227
|
-
"settings": {
|
|
228
|
-
"language": "zh",
|
|
229
|
-
"firstRun": false
|
|
230
|
-
},
|
|
231
|
-
"metadata": {
|
|
232
|
-
"version": "2.0.0",
|
|
233
|
-
"createdAt": "2025-01-15T10:00:00.000Z",
|
|
234
|
-
"updatedAt": "2025-01-15T10:30:00.000Z"
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
## 💡 使用示例
|
|
240
|
-
|
|
241
|
-
### 完整首次设置
|
|
242
|
-
```bash
|
|
243
|
-
# 首次运行 - 语言选择
|
|
244
|
-
ccman
|
|
245
|
-
# → 语言选择向导
|
|
246
|
-
# → 未找到供应商,引导创建
|
|
247
|
-
# → 自动更新 Claude 设置
|
|
248
|
-
|
|
249
|
-
# 添加其他供应商
|
|
250
|
-
ccman add staging "测试API" https://staging-api.com
|
|
251
|
-
ccman add dev "开发环境" https://dev-api.com
|
|
252
|
-
|
|
253
|
-
# 在供应商间切换
|
|
254
|
-
ccman use staging
|
|
255
|
-
ccman use dev
|
|
256
|
-
ccman use anthropic
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### 多供应商工作流
|
|
260
|
-
```bash
|
|
261
|
-
# 列出所有供应商的详情
|
|
262
|
-
ccman ls
|
|
263
|
-
# * Anthropic Official (anthropic) - https://api.anthropic.com
|
|
264
|
-
# 测试API (staging) - https://staging-api.com
|
|
265
|
-
# 开发环境 (dev) - https://dev-api.com
|
|
266
|
-
|
|
267
|
-
# 切换到测试环境
|
|
268
|
-
ccman use staging
|
|
269
|
-
# ✓ 供应商切换成功
|
|
270
|
-
# ✓ Claude Code 配置已成功更新!
|
|
271
|
-
|
|
272
|
-
# 检查当前供应商
|
|
273
|
-
ccman ls --current
|
|
274
|
-
# 当前供应商: 测试API (staging)
|
|
275
|
-
# 基础URL: https://staging-api.com
|
|
276
|
-
# 使用次数: 3 次
|
|
277
|
-
# 最后更新: 2025-01-15 10:30:15
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### 语言切换
|
|
281
|
-
```bash
|
|
282
|
-
# 检查当前语言
|
|
283
|
-
ccman lang
|
|
284
|
-
# 当前语言: 中文 (Chinese)
|
|
285
|
-
|
|
286
|
-
# 切换到英文
|
|
287
|
-
ccman lang set en
|
|
288
|
-
# ✓ 语言切换成功
|
|
289
|
-
# Current language: English
|
|
290
|
-
|
|
291
|
-
# 设置自动检测
|
|
292
|
-
ccman lang set auto
|
|
293
|
-
# ✓ 语言切换成功
|
|
294
|
-
# 当前语言: 自动检测 (Auto-detect)
|
|
295
|
-
# 自动检测结果: English
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
## 🛠️ 开发设置
|
|
299
|
-
|
|
300
|
-
### 开发环境
|
|
301
|
-
CCM 支持隔离的开发环境:
|
|
302
|
-
|
|
303
|
-
```bash
|
|
304
|
-
# 设置开发路径
|
|
305
|
-
export CCM_CONFIG_DIR=".ccman-dev"
|
|
306
|
-
export CLAUDE_CONFIG_PATH="$HOME/.claude/settings-dev.json"
|
|
307
|
-
|
|
308
|
-
# 使用开发模式
|
|
309
|
-
npm run dev
|
|
310
|
-
|
|
311
|
-
# 生产环境构建
|
|
312
|
-
npm run build
|
|
313
|
-
|
|
314
|
-
# 测试构建版本
|
|
315
|
-
npm start
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
### 开发命令
|
|
319
|
-
```bash
|
|
320
|
-
npm run dev # 使用 tsx 的开发模式
|
|
321
|
-
npm run build # TypeScript 编译
|
|
322
|
-
npm run start # 运行构建后的 CLI
|
|
323
|
-
npm run clean # 删除 dist/ 目录
|
|
324
|
-
npm run lint # ESLint TypeScript 文件检查
|
|
325
|
-
npm test # 运行测试(passWithNoTests)
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
## 🔍 故障排除
|
|
329
|
-
|
|
330
|
-
### 供应商问题
|
|
331
|
-
```bash
|
|
332
|
-
# 供应商不工作?
|
|
333
|
-
ccman ls --current # 检查当前供应商详情
|
|
334
|
-
ccman use <供应商id> # 重新应用供应商配置
|
|
335
|
-
|
|
336
|
-
# 设置未应用?
|
|
337
|
-
# 检查 ~/.claude/settings.json 的更新
|
|
338
|
-
cat ~/.claude/settings.json | grep ANTHROPIC
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
### 语言问题
|
|
342
|
-
```bash
|
|
343
|
-
# 语言未切换?
|
|
344
|
-
ccman lang # 检查当前设置
|
|
345
|
-
ccman lang set zh # 强制中文
|
|
346
|
-
ccman lang set en # 强制英文
|
|
347
|
-
|
|
348
|
-
# 首次运行问题?
|
|
349
|
-
ccman lang reset # 重置为首次运行状态
|
|
350
|
-
ccman # 重新启动进行语言选择
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
### 配置问题
|
|
354
|
-
```bash
|
|
355
|
-
# 配置损坏?
|
|
356
|
-
ccman clear # 删除所有(需确认)
|
|
357
|
-
ccman # 重新开始
|
|
358
|
-
|
|
359
|
-
# 开发环境隔离
|
|
360
|
-
export CCM_CONFIG_DIR=".ccman-dev" # 独立开发配置
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
## 📋 要求
|
|
364
|
-
|
|
365
|
-
- **Node.js** >= 16.0.0
|
|
366
|
-
- **Claude Code** 已安装且支持 settings.json
|
|
367
|
-
- **操作系统**: Linux, macOS, Windows (WSL)
|
|
368
|
-
|
|
369
|
-
## 📄 许可证
|
|
370
|
-
|
|
371
|
-
MIT 许可证 - 详见 LICENSE 文件。
|
|
372
|
-
|
|
373
|
-
---
|
|
374
|
-
|
|
375
|
-
## 🚀 从 v1.x 迁移
|
|
376
|
-
|
|
377
|
-
CCM v2.0 使用完全不同的架构:
|
|
378
|
-
|
|
379
|
-
### v1.x(Shell 集成)
|
|
380
|
-
- 修改 shell 配置文件
|
|
381
|
-
- 使用环境变量
|
|
382
|
-
- 复杂的 shell 集成
|
|
383
|
-
|
|
384
|
-
### v2.0(直接集成)
|
|
385
|
-
- 直接修改 `~/.claude/settings.json`
|
|
386
|
-
- 基于供应商的配置
|
|
387
|
-
- 语言支持
|
|
388
|
-
- 简化、更安全的方法
|
|
389
|
-
|
|
390
|
-
**迁移**:v1.x 和 v2.x 不兼容。如果升级,请使用 `ccman clear` 重新开始。
|
|
391
|
-
|
|
392
|
-
---
|
|
393
|
-
|
|
394
|
-
*CCM v2.0 - 智能、多语言、无缝的 Claude Code 供应商管理。*
|
package/dev-test.sh
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# CCM 开发测试脚本
|
|
4
|
-
# 设置开发环境变量,避免影响生产配置
|
|
5
|
-
|
|
6
|
-
echo "🔧 Setting up CCM development environment..."
|
|
7
|
-
|
|
8
|
-
# 设置开发环境变量
|
|
9
|
-
export CCM_CONFIG_DIR=".ccman-dev"
|
|
10
|
-
export CLAUDE_CONFIG_PATH="$HOME/.claude/settings-dev.json"
|
|
11
|
-
|
|
12
|
-
echo " CCM Config Directory: $HOME/$CCM_CONFIG_DIR"
|
|
13
|
-
echo " Claude Config Path: $CLAUDE_CONFIG_PATH"
|
|
14
|
-
echo
|
|
15
|
-
|
|
16
|
-
# 创建开发用的 Claude 配置文件(如果不存在)
|
|
17
|
-
if [ ! -f "$CLAUDE_CONFIG_PATH" ]; then
|
|
18
|
-
echo "📝 Creating development Claude settings file..."
|
|
19
|
-
mkdir -p "$(dirname "$CLAUDE_CONFIG_PATH")"
|
|
20
|
-
cat > "$CLAUDE_CONFIG_PATH" << 'EOF'
|
|
21
|
-
{
|
|
22
|
-
"env": {
|
|
23
|
-
"ANTHROPIC_AUTH_TOKEN": "",
|
|
24
|
-
"ANTHROPIC_BASE_URL": "https://api.anthropic.com"
|
|
25
|
-
},
|
|
26
|
-
"permissions": {
|
|
27
|
-
"allow": [],
|
|
28
|
-
"deny": []
|
|
29
|
-
},
|
|
30
|
-
"apiKeyHelper": "echo ''"
|
|
31
|
-
}
|
|
32
|
-
EOF
|
|
33
|
-
echo " Created: $CLAUDE_CONFIG_PATH"
|
|
34
|
-
echo
|
|
35
|
-
fi
|
|
36
|
-
|
|
37
|
-
# 执行 CCM 命令
|
|
38
|
-
echo "🚀 Running CCM command: $@"
|
|
39
|
-
echo
|
|
40
|
-
npm run dev -- "$@"
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# NPM 发布配置指南
|
|
2
|
-
|
|
3
|
-
## 🔐 步骤一:获取 NPM Token
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
# 1. 登录 NPM
|
|
7
|
-
npm login
|
|
8
|
-
|
|
9
|
-
# 2. 创建发布权限的 token
|
|
10
|
-
npm token create --read-only=false
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
复制生成的 token(格式:`npm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`)
|
|
14
|
-
|
|
15
|
-
## 🔧 步骤二:设置 GitHub Secrets
|
|
16
|
-
|
|
17
|
-
1. 访问:`https://github.com/2ue/ccm/settings/secrets/actions`
|
|
18
|
-
2. 点击 **"New repository secret"**
|
|
19
|
-
3. 设置:
|
|
20
|
-
- **Name**: `NPM_TOKEN`
|
|
21
|
-
- **Secret**: 粘贴你的 NPM token
|
|
22
|
-
4. 点击 **"Add secret"**
|
|
23
|
-
|
|
24
|
-
### 验证设置
|
|
25
|
-
设置完成后,应看到:
|
|
26
|
-
```
|
|
27
|
-
Repository secrets:
|
|
28
|
-
• NPM_TOKEN ••••••••••••••••••••••••••••••••••••••••
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### 关于 GITHUB_TOKEN
|
|
32
|
-
**无需手动设置** - GitHub Actions 自动提供此 token
|
|
33
|
-
|
|
34
|
-
## 🚀 步骤三:发布
|
|
35
|
-
|
|
36
|
-
### 自动发布(推荐)
|
|
37
|
-
```bash
|
|
38
|
-
# 交互式选择版本
|
|
39
|
-
pnpm run release:interactive
|
|
40
|
-
|
|
41
|
-
# 或指定版本类型
|
|
42
|
-
pnpm run release:patch
|
|
43
|
-
pnpm run release:minor
|
|
44
|
-
pnpm run release:major
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### 本地发布(备用)
|
|
48
|
-
```bash
|
|
49
|
-
pnpm run publish:local
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## 🔍 故障排查
|
|
53
|
-
|
|
54
|
-
### 401 Unauthorized
|
|
55
|
-
- 检查 NPM token 是否正确设置
|
|
56
|
-
- 重新生成 token: `npm token create --read-only=false`
|
|
57
|
-
|
|
58
|
-
### 403 Forbidden
|
|
59
|
-
- 包名已存在:修改 package.json 中的 name
|
|
60
|
-
- 检查发布权限:`npm owner ls ccman`
|
|
61
|
-
|
|
62
|
-
### 测试发布权限
|
|
63
|
-
```bash
|
|
64
|
-
npm publish --dry-run
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## 🛡️ 安全提醒
|
|
68
|
-
|
|
69
|
-
- NPM token 只存储在 GitHub Secrets 中
|
|
70
|
-
- 定期轮换 token(建议 90 天)
|
|
71
|
-
- Token 泄露时立即删除并重新创建
|
package/docs/release-guide.md
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
# 发布指南
|
|
2
|
-
|
|
3
|
-
## 📋 发布前准备
|
|
4
|
-
|
|
5
|
-
1. **设置 NPM Token**:参见 [npm-publish-guide.md](./npm-publish-guide.md)
|
|
6
|
-
2. **确保工作目录干净**:`git status`
|
|
7
|
-
3. **确保在主分支**:`git checkout main`
|
|
8
|
-
|
|
9
|
-
## 🚀 发布方式
|
|
10
|
-
|
|
11
|
-
> 💡 **强烈推荐**: 使用新的模块化智能发布脚本,详见 [Scripts使用指南](./scripts-guide.md)
|
|
12
|
-
|
|
13
|
-
### 🌟 方式一:智能发布脚本(强烈推荐)
|
|
14
|
-
|
|
15
|
-
#### 使用 smart-release-v3.sh
|
|
16
|
-
```bash
|
|
17
|
-
# 完整智能发布流程(推荐)
|
|
18
|
-
./scripts/smart-release-v3.sh
|
|
19
|
-
# 或使用 npm script
|
|
20
|
-
pnpm run release:smart
|
|
21
|
-
|
|
22
|
-
# 跳过版本升级,使用当前版本
|
|
23
|
-
./scripts/smart-release-v3.sh --skip-version
|
|
24
|
-
|
|
25
|
-
# 直接指定版本类型
|
|
26
|
-
./scripts/smart-release-v3.sh --version-type minor
|
|
27
|
-
|
|
28
|
-
# 不监控发布状态(快速完成)
|
|
29
|
-
./scripts/smart-release-v3.sh --no-monitor
|
|
30
|
-
|
|
31
|
-
# 查看帮助
|
|
32
|
-
./scripts/smart-release-v3.sh --help
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
#### ✨ 智能发布特性
|
|
36
|
-
- **智能未提交代码处理**: 3种处理选项(提交/暂存/取消)
|
|
37
|
-
- **智能版本推荐**: 基于git提交历史分析
|
|
38
|
-
- **实时发布监控**: 5分钟监控GitHub Actions、NPM、Release
|
|
39
|
-
- **完整链接输出**: 自动生成所有相关链接
|
|
40
|
-
- **模块化架构**: 每个步骤可独立测试和调试
|
|
41
|
-
|
|
42
|
-
### 方式二:经典发布脚本
|
|
43
|
-
|
|
44
|
-
#### Scripts发布
|
|
45
|
-
```bash
|
|
46
|
-
# 快速发布(日常推荐)
|
|
47
|
-
./scripts/quick-release.sh patch # 修订版本
|
|
48
|
-
./scripts/quick-release.sh minor # 次版本
|
|
49
|
-
./scripts/quick-release.sh major # 主版本
|
|
50
|
-
|
|
51
|
-
# 完整发布流程(重要版本)
|
|
52
|
-
./scripts/release.sh # 交互式完整流程
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
#### NPM Scripts发布
|
|
56
|
-
```bash
|
|
57
|
-
# 交互选择版本类型
|
|
58
|
-
pnpm run release:interactive
|
|
59
|
-
|
|
60
|
-
# 指定版本类型
|
|
61
|
-
pnpm run release:patch # 0.0.1 → 0.0.2
|
|
62
|
-
pnpm run release:minor # 0.0.1 → 0.1.0
|
|
63
|
-
pnpm run release:major # 0.0.1 → 1.0.0
|
|
64
|
-
|
|
65
|
-
# 完整发布流程
|
|
66
|
-
pnpm run release
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### 方式三:本地发布(备用)
|
|
70
|
-
```bash
|
|
71
|
-
# 直接发布到 NPM(跳过 GitHub Actions)
|
|
72
|
-
pnpm run publish:local
|
|
73
|
-
# 或
|
|
74
|
-
./scripts/publish-local.sh
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## 🔧 独立模块使用
|
|
78
|
-
|
|
79
|
-
模块化脚本支持独立使用,便于测试和调试:
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
# 仅检查代码状态
|
|
83
|
-
./scripts/modules/check-uncommitted.sh
|
|
84
|
-
|
|
85
|
-
# 仅进行版本升级
|
|
86
|
-
./scripts/modules/version-bump.sh minor
|
|
87
|
-
|
|
88
|
-
# 仅创建tag并推送
|
|
89
|
-
./scripts/modules/create-tag.sh
|
|
90
|
-
|
|
91
|
-
# 仅监控发布状态
|
|
92
|
-
./scripts/modules/monitor-release.sh
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
## 📊 发布后验证
|
|
96
|
-
|
|
97
|
-
### 1. 检查 GitHub Actions
|
|
98
|
-
访问:https://github.com/2ue/ccm/actions
|
|
99
|
-
- 等待构建完成(约 2-3 分钟)
|
|
100
|
-
- 确认状态为 ✅ 成功
|
|
101
|
-
|
|
102
|
-
### 2. 验证结果
|
|
103
|
-
- **NPM 包**:https://www.npmjs.com/package/ccman
|
|
104
|
-
- **GitHub Release**:https://github.com/2ue/ccm/releases
|
|
105
|
-
- **测试安装**:`npm install -g ccman`
|
|
106
|
-
|
|
107
|
-
## 🔧 故障排查
|
|
108
|
-
|
|
109
|
-
### GitHub Actions 失败
|
|
110
|
-
1. 检查 `NPM_TOKEN` 设置是否正确
|
|
111
|
-
2. 查看 Actions 日志获取详细错误信息
|
|
112
|
-
3. 确认包名未被占用
|
|
113
|
-
|
|
114
|
-
### 版本冲突
|
|
115
|
-
```bash
|
|
116
|
-
# 检查已存在的版本
|
|
117
|
-
npm view ccman versions --json
|
|
118
|
-
|
|
119
|
-
# 使用新版本号重新发布
|
|
120
|
-
pnpm run release:patch
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### 手动创建标签(高级)
|
|
124
|
-
```bash
|
|
125
|
-
# 如果脚本失败,可手动操作
|
|
126
|
-
pnpm version patch --no-git-tag-version
|
|
127
|
-
git add . && git commit -m "chore: 发布版本 v0.0.2"
|
|
128
|
-
git tag -a v0.0.2 -m "Release v0.0.2"
|
|
129
|
-
git push origin main && git push origin v0.0.2
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
## ✅ 发布检查清单
|
|
133
|
-
|
|
134
|
-
### 发布前
|
|
135
|
-
- [ ] NPM token 已设置
|
|
136
|
-
- [ ] 工作目录干净
|
|
137
|
-
- [ ] 在主分支
|
|
138
|
-
- [ ] 构建和测试通过
|
|
139
|
-
|
|
140
|
-
### 发布后
|
|
141
|
-
- [ ] GitHub Actions 成功
|
|
142
|
-
- [ ] NPM 包可安装
|
|
143
|
-
- [ ] GitHub Release 创建
|
|
144
|
-
- [ ] 版本号正确
|