tanmi-dock 0.6.0 → 0.6.1

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 +129 -260
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -2,317 +2,186 @@
2
2
 
3
3
  集中型第三方库链接管理工具 - 通过符号链接统一管理多项目共享的第三方依赖库。
4
4
 
5
- ## 特性
6
-
7
- - **集中存储**: 所有第三方库统一存储在一个 Store 目录,避免重复下载
8
- - **符号链接**: 通过 symlink 将 Store 中的库链接到项目目录,节省磁盘空间
9
- - **多平台支持**: 支持 macOS/iOS/Android/Windows/Linux/WASM/OHOS 等平台,可同时选择多个平台
10
- - **按平台下载**: 仅下载所需平台的内容,节省带宽和存储空间
11
- - **智能识别**: 自动识别已有库,支持吸收本地库到 Store
12
- - **事务安全**: link 操作支持事务回滚,中断后可恢复
13
- - **文件锁**: 防止并发操作导致数据损坏
14
-
15
- ## 安装
16
-
17
- ```bash
18
- # 克隆仓库
19
- git clone <repo-url>
20
- cd tanmi-dock
21
-
22
- # 安装依赖
23
- npm install
5
+ ## 为什么使用 TanmiDock?
24
6
 
25
- # 构建
26
- npm run build
7
+ 当你有多个项目共享相同的第三方库(如 OpenCV、FFmpeg、Boost 等)时:
27
8
 
28
- # 全局安装(可选)
29
- npm link
30
9
  ```
31
-
32
- ## 快速开始
33
-
34
- ```bash
35
- # 1. 初始化(首次使用)
36
- tanmi-dock init
37
-
38
- # 2. 在项目目录执行链接
39
- cd your-project
40
- tanmi-dock link
41
-
42
- # 3. 查看状态
43
- tanmi-dock status
10
+ 项目A/3rdparty/opencv/ → 500MB
11
+ 项目B/3rdparty/opencv/ → 500MB (相同内容!)
12
+ 项目C/3rdparty/opencv/ → 500MB (又重复了!)
44
13
  ```
45
14
 
46
- ## 命令
47
-
48
- ### `init` - 初始化
15
+ 使用 TanmiDock 后:
49
16
 
50
- 首次使用前初始化 TanmiDock,设置 Store 存储路径。
51
-
52
- ```bash
53
- tanmi-dock init [options]
54
-
55
- 选项:
56
- --store-path <path> 直接指定存储路径(跳过交互)
57
- -y, --yes 使用默认设置
58
17
  ```
59
-
60
- ### `link` - 链接依赖
61
-
62
- 解析项目的 `codepac-dep.json` 配置,将依赖库链接到项目。
63
-
64
- ```bash
65
- tanmi-dock link [path] [options]
66
-
67
- 参数:
68
- path 项目路径(默认当前目录)
69
-
70
- 选项:
71
- -p, --platform <platforms...> 指定平台,可多选 (mac/ios/android/win/linux/wasm/ohos)
72
- -y, --yes 跳过确认提示
73
- --no-download 不自动下载缺失库
74
- --dry-run 只显示将要执行的操作
75
-
76
- 示例:
77
- tanmi-dock link # 交互式选择平台
78
- tanmi-dock link -p mac # 仅 macOS
79
- tanmi-dock link -p mac ios # macOS + iOS
80
- tanmi-dock link -p mac ios android # 多平台
18
+ Store/opencv/abc123/ → 500MB (唯一存储)
19
+ 项目A/3rdparty/opencv/ → 符号链接
20
+ 项目B/3rdparty/opencv/ → 符号链接
21
+ 项目C/3rdparty/opencv/ → 符号链接
81
22
  ```
82
23
 
83
- 依赖状态处理:
84
- - **LINKED**: 已正确链接,跳过
85
- - **RELINK**: 链接目标错误,重建链接
86
- - **REPLACE**: 本地是目录但 Store 已有,替换为链接
87
- - **ABSORB**: 本地有目录但 Store 没有,移入 Store 并创建链接
88
- - **MISSING**: 本地和 Store 都没有,需要下载
89
- - **LINK_NEW**: Store 有但本地没有,创建链接
24
+ **节省磁盘空间 + 统一管理 + 快速切换**
90
25
 
91
- ### `status` - 查看状态
92
-
93
- 显示当前项目或 Store 的状态信息。
94
-
95
- ```bash
96
- tanmi-dock status [options]
97
-
98
- 选项:
99
- -s, --store 显示 Store 状态
100
- -a, --all 显示所有详细信息
101
- ```
102
-
103
- ### `projects` - 项目管理
104
-
105
- 列出所有已注册的项目。
106
-
107
- ```bash
108
- tanmi-dock projects [options]
109
-
110
- 选项:
111
- -a, --all 显示详细信息
112
- ```
26
+ ## 特性
113
27
 
114
- ### `clean` - 清理
28
+ - **集中存储**: 所有第三方库统一存储在 Store 目录,避免重复下载
29
+ - **符号链接**: 通过 symlink 链接到项目,节省磁盘空间
30
+ - **多平台支持**: macOS / iOS / Android / Windows / Linux / WASM / OHOS
31
+ - **按平台下载**: 仅下载所需平台,节省带宽和存储
32
+ - **嵌套依赖**: 自动处理库的嵌套依赖
33
+ - **智能识别**: 自动识别本地已有库,支持吸收到 Store
34
+ - **平台记忆**: 记住上次选择的平台,下次自动应用
35
+ - **断链检测**: 自动检测并修复失效的符号链接
36
+ - **事务安全**: 操作支持回滚,中断后可恢复
37
+ - **自动清理**: 多种清理策略,容量超限时自动提示
115
38
 
116
- 清理未被引用的库,释放磁盘空间。
39
+ ## 安装
117
40
 
118
41
  ```bash
119
- tanmi-dock clean [options]
42
+ # npm 安装
43
+ npm install -g tanmi-dock
120
44
 
121
- 选项:
122
- -y, --yes 跳过确认提示
123
- --dry-run 只显示将要清理的内容
45
+ # 或从源码
46
+ git clone https://github.com/tanmika/TanmiDock.git
47
+ cd tanmi-dock && npm install && npm run build && npm link
124
48
  ```
125
49
 
126
- ### `unlink` - 解除链接
127
-
128
- 解除项目依赖的符号链接,恢复为普通目录。
50
+ ## 快速开始
129
51
 
130
52
  ```bash
131
- tanmi-dock unlink [path] [options]
53
+ # 1. 初始化(首次使用)
54
+ td init
132
55
 
133
- 参数:
134
- path 项目路径(默认当前目录)
56
+ # 2. 在项目目录执行链接
57
+ cd your-project
58
+ td link
135
59
 
136
- 选项:
137
- -y, --yes 跳过确认提示
60
+ # 3. 查看状态
61
+ td status
138
62
  ```
139
63
 
140
- ### `config` - 配置管理
64
+ ## 命令速查
141
65
 
142
- 查看或修改配置。
143
-
144
- ```bash
145
- tanmi-dock config [key] [value]
146
-
147
- 参数:
148
- key 配置项名称
149
- value 配置值(不提供则显示当前值)
150
-
151
- 示例:
152
- tanmi-dock config # 显示所有配置
153
- tanmi-dock config storePath # 显示 storePath
154
- tanmi-dock config autoDownload false # 设置 autoDownload
155
- ```
66
+ | 命令 | 说明 |
67
+ |------|------|
68
+ | `td init` | 初始化,设置 Store 路径 |
69
+ | `td link` | 链接项目依赖 |
70
+ | `td link -p mac ios` | 指定平台链接 |
71
+ | `td status` | 查看当前项目状态 |
72
+ | `td status -s` | 查看 Store 状态 |
73
+ | `td projects` | 列出所有已链接项目 |
74
+ | `td clean` | 清理无引用的库 |
75
+ | `td unlink` | 解除链接,恢复为目录 |
76
+ | `td config` | 交互式配置 |
77
+ | `td doctor` | 环境诊断 |
78
+ | `td verify` | 完整性验证 |
79
+ | `td repair` | 修复问题 |
80
+ | `td update` | 更新到最新版本 |
81
+ | `td migrate <path>` | 迁移 Store 位置 |
156
82
 
157
- ### `migrate` - 迁移 Store
83
+ **别名**: `td` = `tanmidock` = `tanmi-dock`
158
84
 
159
- Store 迁移到新位置。
85
+ ## 平台参数
160
86
 
161
87
  ```bash
162
- tanmi-dock migrate <newPath> [options]
163
-
164
- 参数:
165
- newPath 新的 Store 路径
166
-
167
- 选项:
168
- --force 跳过确认提示
169
- --keep-old 保留旧目录(默认删除)
88
+ td link -p mac # macOS
89
+ td link -p mac ios # macOS + iOS
90
+ td link -p mac ios android # 多平台
170
91
  ```
171
92
 
172
- ### `doctor` - 环境诊断
93
+ | 参数 | 平台 | ASAN 变体 |
94
+ |------|------|-----------|
95
+ | `mac` | macOS | macOS-asan |
96
+ | `win` | Windows | - |
97
+ | `ios` | iOS | iOS-asan |
98
+ | `android` | Android | android-asan, android-hwasan |
99
+ | `linux` | Linux/Ubuntu | - |
100
+ | `wasm` | WebAssembly | - |
101
+ | `ohos` | OpenHarmony | - |
173
102
 
174
- 检测运行环境问题。
103
+ ## 配置
175
104
 
176
105
  ```bash
177
- tanmi-dock doctor [options]
178
-
179
- 选项:
180
- --json 输出 JSON 格式
181
- ```
182
-
183
- 检测内容:
184
- - codepac 是否已安装
185
- - 配置文件是否存在
186
- - Store 目录是否可访问
187
- - 磁盘空间是否充足
106
+ td config # 交互式配置界面
107
+ td config get <key> # 获取配置
108
+ td config set <key> <value> # 设置配置
109
+ ```
110
+
111
+ ### 配置项
112
+
113
+ | 配置项 | 说明 | 默认值 |
114
+ |--------|------|--------|
115
+ | `storePath` | Store 存储路径 | `~/.tanmi-dock/store` |
116
+ | `cleanStrategy` | 清理策略 | `unreferenced` |
117
+ | `unreferencedThreshold` | 容量阈值 (capacity 策略) | `10GB` |
118
+ | `unusedDays` | 未使用天数 (unused 策略) | `30` |
119
+ | `autoDownload` | 自动下载缺失库 | `true` |
120
+ | `concurrency` | 并发下载数 | `3` |
121
+ | `logLevel` | 日志级别 | `info` |
122
+ | `proxy` | 代理设置 | - |
123
+
124
+ ### 清理策略
125
+
126
+ | 策略 | 说明 |
127
+ |------|------|
128
+ | `unreferenced` | 清理无项目引用的库(默认) |
129
+ | `unused` | 清理超过 N 天未使用的库 |
130
+ | `capacity` | 无引用库超过阈值时提示清理 |
131
+ | `manual` | 不自动清理 |
132
+
133
+ ## 工作原理
134
+
135
+ ```
136
+ ┌─────────────────────────────────────────────────────────────┐
137
+ │ │
138
+ │ 项目 A Store │
139
+ │ └── 3rdparty/ └── opencv/abc123/ │
140
+ │ └── opencv/ ─────────────→ macOS/ │
141
+ │ iOS/ │
142
+ │ 项目 B _shared/ │
143
+ │ └── 3rdparty/ │
144
+ │ └── opencv/ ─────────────→ (同上) │
145
+ │ │
146
+ └─────────────────────────────────────────────────────────────┘
147
+ ```
148
+
149
+ - **Store**: 中央存储,库的实际文件存放处
150
+ - **平台目录**: 符号链接到 Store,节省空间
151
+ - **_shared**: 共享文件(cmake、README 等)物理复制到项目
188
152
 
189
- ### `verify` - 完整性验证
153
+ ## 常见问题
190
154
 
191
- 验证 Store 和 Registry 的完整性。
155
+ ### Store 占用太大?
192
156
 
193
157
  ```bash
194
- tanmi-dock verify
158
+ td clean # 清理无引用的库
159
+ td config set cleanStrategy capacity
160
+ td config set unreferencedThreshold 5GB # 设置阈值
195
161
  ```
196
162
 
197
- 检测内容:
198
- - **悬挂链接**: 符号链接指向的目标不存在
199
- - **孤立库**: Store 中存在但 Registry 未记录的库
200
- - **缺失库**: Registry 记录但 Store 中不存在的库
201
- - **无效项目**: 已注册但路径不存在的项目
202
-
203
- ### `repair` - 修复问题
204
-
205
- 修复 verify 检测到的问题。
163
+ ### 切换分支后链接失效?
206
164
 
207
165
  ```bash
208
- tanmi-dock repair [options]
209
-
210
- 选项:
211
- --dry-run 只显示将执行的操作
212
- --prune 删除孤立库(默认登记到 Registry)
213
- --force 跳过确认提示
166
+ td link # 重新链接会自动修复
214
167
  ```
215
168
 
216
- 修复操作:
217
- - 清理过期项目记录
218
- - 移除悬挂的符号链接
219
- - 登记或删除孤立库
220
-
221
- ## 配置文件
222
-
223
- ### codepac-dep.json
224
-
225
- 项目依赖配置文件,定义需要链接的第三方库。
226
-
227
- ```json
228
- {
229
- "version": "1.0.0",
230
- "vars": {
231
- "LIBS_ROOT": "../3rdparty"
232
- },
233
- "repos": {
234
- "common": [
235
- {
236
- "url": "https://github.com/user/repo.git",
237
- "commit": "abc1234",
238
- "branch": "main",
239
- "dir": "${LIBS_ROOT}/repo"
240
- }
241
- ]
242
- }
243
- }
244
- ```
169
+ ### 如何查看哪些库没被引用?
245
170
 
246
- ### 全局配置
247
-
248
- 配置文件位置:
249
- - macOS/Linux: `~/.tanmi-dock/config.json`
250
- - Windows: `%USERPROFILE%\.tanmi-dock\config.json`
251
-
252
- 配置项:
253
- - `storePath`: Store 存储路径
254
- - `cleanStrategy`: 清理策略 (`unreferenced` | `lru` | `manual`)
255
- - `autoDownload`: 是否自动下载缺失库
256
-
257
- ## 目录结构
258
-
259
- ### Store 结构 (v0.6.0+)
260
-
261
- ```
262
- Store/
263
- └── libImageCodec/
264
- └── 38648c31/
265
- ├── macOS/ # 平台特定内容
266
- ├── iOS/
267
- ├── android/
268
- └── _shared/ # 共享文件
269
- ├── codepac-dep.json
270
- ├── *.cmake
271
- └── README.md
272
- ```
273
-
274
- **平台目录识别规则**: macOS, macOS-asan, Win, iOS, iOS-asan, android, android-asan, android-hwasan, ubuntu, wasm, ohos
275
-
276
- 其他文件/目录都归入 `_shared/`。
277
-
278
- ### 链接后的项目结构
279
-
280
- ```
281
- 3rdParty/libImageCodec/
282
- ├── macOS/ → Store/.../macOS/ (符号链接)
283
- ├── iOS/ → Store/.../iOS/ (符号链接)
284
- ├── codepac-dep.json (复制)
285
- └── *.cmake (复制)
171
+ ```bash
172
+ td projects --tree # 树状显示库引用关系
286
173
  ```
287
174
 
288
- - **平台目录**: 符号链接到 Store,节省空间
289
- - **共享文件**: 物理复制,避免多项目冲突
290
-
291
- ## 开发
175
+ ### 如何迁移 Store 到其他磁盘?
292
176
 
293
177
  ```bash
294
- # 开发模式运行
295
- npm run dev
296
-
297
- # 运行测试
298
- npm test
299
-
300
- # 测试覆盖率
301
- npm run test:coverage
302
-
303
- # 代码检查
304
- npm run lint
305
-
306
- # 代码格式化
307
- npm run format
178
+ td migrate /Volumes/Data/.tanmi-dock/store
308
179
  ```
309
180
 
310
- ## 技术栈
181
+ ## 更多文档
311
182
 
312
- - TypeScript
313
- - Commander.js (CLI 框架)
314
- - Vitest (测试框架)
315
- - ESLint + Prettier (代码质量)
183
+ - [CLI 完整文档](docs/CLI.md) - 所有命令的详细参数和示例
184
+ - [API 文档](docs/API.md) - 开发者接口文档
316
185
 
317
186
  ## 许可
318
187
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tanmi-dock",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "集中型第三方库链接管理工具",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",