ModMan Pro — VS Code Module Manager for GitLab
ModMan Pro 是一款面向 GitLab(社区版/企业版/自建) 的模块管理扩展,帮助你在 VS Code 中一键完成:
- 功能配置:填入 GitLab 访问地址、Token、模块映射表仓库地址(Project ID/URL),并从该仓库的 最新 Release 中拉取映射表到
.vscode/,可在多个工程复用。
- 模块安装:按映射表列出所有模块 → 查询 Release 列表 → 选择版本 → 下载源码并解压到统一模块目录(
name@tag);
- 依赖解析:读取已安装模块目录中的
requirements.json,自动安装依赖;支持标准 SemVer 版本范围(兼容 v/V 前缀)。
适用场景:公司内部模块化工程、SDK 统一发放、示例工程/组件分发、私有 GitLab 包管理替代方案等。
✨ 功能清单
配置页
- 保存 GitLab Host、Private Token(
PRIVATE-TOKEN)与 模块映射表仓库(只存放 module-map.json)。
- “Test Connection” 通过后才允许 Save / Fetch latest map from latest Release,并在页面底部的独立日志框显示操作日志。
- 支持自签证书站点(可开启
allowInsecureHttps)。
模块安装页
- 搜索过滤模块名,列表最多显示 10 项,自动自适应高度,可滚动。
- 查询模块 Release 列表并选择版本安装,安装日志与卸载日志分开显示。
- 同名模块检测:安装时若发现已有
name@* 目录,将提示“更新并替换”或取消。
- 已安装模块:支持搜索、多选一键删除、刷新列表。
依赖解析
- 安装完成后自动读取该模块目录下的
requirements.json 并解析。
- 版本表达式支持(SemVer):
^1.2.0、~1.2.0、=1.0.0 <2.0.0、0.x/0.*、1.2.3 等。
- 版本字符串支持
v0.1.0 / V0.1.0 / 0.1.0 等写法自动规范化。
- 若已安装但不满足范围:先弹窗让你输入/调整规则选择目标版本,再二次确认是否替换安装(清理旧目录后安装新版本)。
📦 安装
- 从 VSIX 离线安装
维护者可以在公司内网分发 .vsix 包,用户在 VS Code:
- 扩展视图(Ctrl/Cmd+Shift+X) → 右上角
… → Install from VSIX...
- VS Marketplace 上架(可选)
维护者可将扩展发布到官方商店,其他人搜索安装。
🚀 快速开始
- 打开命令面板(Ctrl/Cmd+Shift+P),搜索 “ModMan Pro”,打开:
- Configuration / 配置页
- Installer / 安装页
- 在 配置页:
- 填写 GitLab Host(例如
http://192.168.0.127:9980);
- 填写 Private Token;
- 填写 映射表仓库(Project ID 或仓库 URL);
- 点击 Test Connection → 通过后点击 Save 或 Fetch latest map from latest Release。
- 在 安装页:
- 搜索选择模块 → 点击 Get release versions → 选择 tag → Install;
- 安装完成会自动解析依赖,按需提示你选择版本规则并确认是否替换安装;
- “已安装模块”区域支持搜索、多选卸载、刷新。
模块会被安装到统一目录(可配置,默认 ${workspaceFolder}/modules),目录命名为 name@tag。
🧭 配置项(Settings)
扩展设置(modmanPro.*):
modulesDir:模块安装根目录,默认 ${workspaceFolder}/modules;
allowInsecureHttps:允许访问自签/不受信证书的 GitLab(仅在内网可信环境启用)。
这些设置既写入当前工程 .vscode/ 目录,也会写入扩展的全局存储,便于复用。
🗂️ 数据文件格式
1) module-map.json
存放在映射表仓库的根目录(通过 Release 提供),结构已升级,示例:
{
"modules": [
{
"name": "view_code_create",
"projectId": "195",
"repoUrl": "http://192.168.0.127:9980/lingtianjie/view_code_create",
"description": "代码创建/示例工程",
"topics": [
"example",
"auto",
"cpp"
],
"default_branch": "main",
"visibility": "internal",
"maintainer": "lingtianjie",
"recommended_version": "0.1.0"
},
{
"name": "SERV_macro",
"projectId": "269",
"repoUrl": "http://192.168.0.127:9980/meter_platform/product_domestic/module_platform/serv_platform/serv_macro/serv_macro",
"description": "平台宏定义服务",
"topics": [
"宏定义",
"宏工具",
"数据类型"
],
"default_branch": "main",
"visibility": "internal",
"maintainer": "xiechenyang",
"recommended_version": "0.0.0"
}
]
}
2) requirements.json
存放在单个模块目录中(用于依赖解析),结构已升级,示例:
{
"module": {
"name": "SERV_guard_parameter",
"description": "带回归默认值功能的参数保固",
"recommended_version": "0.0.0"
},
"dependencies": [
{
"name": "SERV_macro",
"projectId": "269",
"version": "^0.0.0",
"scope": "runtime",
"required": true
}
]
}
版本约束(SemVer)写法示例
^1.2.0:允许 1.x 的兼容更新(>=1.2.0 <2.0.0)
~1.2.0:允许 1.2.x 的补丁更新(>=1.2.0 <1.3.0)
=1.0.0 <2.0.0:明确范围
0.x / 0.*:所有 0 主版本(>=0.0.0 <1.0.0)
1.2.3:精确版本