Licence
MIT
Version
1.0.3
Deps
6
Size
1.1 MB
Vulns
0
Weekly
0
TanmiDock
集中型第三方库链接管理工具 - 通过符号链接统一管理多项目共享的第三方依赖库。
为什么使用 TanmiDock?
当你有多个项目共享相同的第三方库(如 OpenCV、FFmpeg、Boost 等)时:
项目A/3rdparty/opencv/ → 500MB
项目B/3rdparty/opencv/ → 500MB (相同内容!)
项目C/3rdparty/opencv/ → 500MB (又重复了!)
使用 TanmiDock 后:
Store/opencv/abc123/ → 500MB (唯一存储)
项目A/3rdparty/opencv/ → 符号链接
项目B/3rdparty/opencv/ → 符号链接
项目C/3rdparty/opencv/ → 符号链接
节省磁盘空间 + 统一管理 + 快速切换
特性
- 集中存储: 所有第三方库统一存储在 Store 目录,避免重复下载
- 符号链接: 通过 symlink 链接到项目,节省磁盘空间
- 多平台支持: macOS / iOS / Android / Windows / Linux / WASM / OHOS
- 按平台下载: 仅下载所需平台,节省带宽和存储
- 嵌套依赖: 自动处理库的嵌套依赖
- 智能识别: 自动识别本地已有库,支持吸收到 Store
- 平台记忆: 记住上次选择的平台,下次自动应用
- 断链检测: 自动检测并修复失效的符号链接
- 事务安全: 操作支持回滚,中断后可恢复
- 自动清理: 多种清理策略,容量超限时自动提示
安装
# npm 安装
npm install -g tanmi-dock
# 或从源码
git clone https://github.com/tanmika/TanmiDock.git
cd tanmi-dock && npm install && npm run build && npm link
快速开始
# 1. 初始化(首次使用)
td init
# 2. 在项目目录执行链接
cd your-project
td link
# 3. 查看状态
td status
命令速查
| 命令 | 说明 |
|---|---|
td init |
初始化,设置 Store 路径 |
td link |
链接项目依赖 |
td link -p mac ios |
指定平台链接 |
td status |
查看当前项目状态 |
td status -s |
查看 Store 状态 |
td projects |
列出所有已链接项目 |
td clean |
清理无引用的库 |
td unlink |
解除链接,恢复为目录 |
td config |
交互式配置 |
td doctor |
环境诊断 |
td verify |
完整性验证 |
td repair |
修复问题 |
td update |
更新到最新版本 |
td migrate <path> |
迁移 Store 位置 |
别名: td = tanmidock = tanmi-dock
平台参数
td link -p mac # 仅 macOS
td link -p mac ios # macOS + iOS
td link -p mac ios android # 多平台
| 参数 | 平台 | ASAN 变体 |
|---|---|---|
mac |
macOS | macOS-asan |
win |
Windows | - |
ios |
iOS | iOS-asan |
android |
Android | android-asan, android-hwasan |
linux |
Linux/Ubuntu | - |
wasm |
WebAssembly | - |
ohos |
OpenHarmony | - |
配置
td config # 交互式配置界面
td config get <key> # 获取配置
td config set <key> <value> # 设置配置
配置项
| 配置项 | 说明 | 默认值 |
|---|---|---|
storePath |
Store 存储路径 | ~/.tanmi-dock/store |
cleanStrategy |
清理策略 | unreferenced |
unreferencedThreshold |
容量阈值 (capacity 策略) | 10GB |
unusedDays |
未使用天数 (unused 策略) | 30 |
autoDownload |
自动下载缺失库 | true |
concurrency |
并发下载数 | 3 |
logLevel |
日志级别 | info |
proxy |
代理设置 | - |
清理策略
| 策略 | 说明 |
|---|---|
unreferenced |
清理无项目引用的库(默认) |
unused |
清理超过 N 天未使用的库 |
capacity |
无引用库超过阈值时提示清理 |
manual |
不自动清理 |
工作原理
┌─────────────────────────────────────────────────────────────┐
│ │
│ 项目 A Store │
│ └── 3rdparty/ └── opencv/abc123/ │
│ └── opencv/ ─────────────→ macOS/ │
│ iOS/ │
│ 项目 B _shared/ │
│ └── 3rdparty/ │
│ └── opencv/ ─────────────→ (同上) │
│ │
└─────────────────────────────────────────────────────────────┘
- Store: 中央存储,库的实际文件存放处
- 平台目录: 符号链接到 Store,节省空间
- _shared: 共享文件(cmake、README 等)物理复制到项目
常见问题
Store 占用太大?
td clean # 清理无引用的库
td config set cleanStrategy capacity
td config set unreferencedThreshold 5GB # 设置阈值
切换分支后链接失效?
td link # 重新链接会自动修复
如何查看哪些库没被引用?
td projects --tree # 树状显示库引用关系
如何迁移 Store 到其他磁盘?
td migrate /Volumes/Data/.tanmi-dock/store
更多文档
许可
MIT