模板迁移助手 (DX & Mist)
一个用于跨 App 一键迁移 DinamicX(DX)模板与 Mist 模板的 VSCode 插件。
当一个 App 从另一个 App 拆分出来时,需要把大量 DX / Mist 模板配置同步过去——既要在新仓库创建模板、拷贝代码、改工程配置,还要发布。这个插件把整套繁琐流程自动化:自动创建 → 拷贝代码 → 同步配置 → git 提交 → 发布,并提供友好的可视化界面。
✨ 功能特性
- 双入口:活动栏图标(侧边栏面板)+ 命令面板(编辑器标签页),任选其一
- DX 模板迁移
- 自动识别当前工作区的 DX 工程,或手动选择源 / 目标工程
- 模板多选、全选 / 反选,新模板名自动建议且可逐条编辑
- 自动调用
dx-cli 创建模板(服务端注册 + 写入新 ID)→ 拷贝 src/ → 同步 pathConfig / dependencies
- 可选:自动 git commit / push、预发布(prepublish)/ 正式发布(release)
- Mist 模板迁移
- 工作区
template/ 目录含 .mist 文件时自动识别为源仓库
- 源仓库 → 目标仓库拷贝(保留目录结构)、git commit / push、发布到模板平台
- 智能命名:
hm_ai_xxx → txd_ai_xxx、HEMA@xxx.mist → TXD@xxx.mist,前缀可从目标工程名自动推断
- 仓库映射缓存:记住「源仓库 → 目标仓库」对应关系,下次自动回填目标
- 实时反馈:彩色日志控制台 + 进度条 + 成功 / 失败汇总
📦 安装
方式一:从 VSIX 安装(推荐)
cd /Users/yuyuhang/Documents/alibaba/dx-migrate
npm install
npx vsce package # 打包生成 dx-migrate-<version>.vsix
code --install-extension dx-migrate-<version>.vsix --force
若未安装打包工具:npm i -g @vscode/vsce
方式二:F5 调试运行
用 VSCode 打开本目录,按 F5 启动「扩展开发宿主」窗口即可体验。
🚀 使用方法
打开迁移助手
- 入口一(推荐):点击左侧活动栏的 「双向箭头」图标,迁移助手会在侧边栏展开(可拖到右侧面板)
- 入口二:
Cmd+Shift+P → 输入 DX Migrate: 打开模板迁移助手,在编辑器标签页打开
DX 模板迁移流程
- 选择 DX 源工程 和 DX 目标工程(若当前工作区是 DX 工程会自动识别为源)
- 在模板列表中勾选要迁移的模板,右侧新名已按规则自动填好,可修改
- 勾选发布选项(git commit / push / 预发布 / 正式发布)
- 点击 「开始迁移」
Mist 模板迁移流程
- 选择 Mist 源仓库 和 Mist 目标仓库(目标仓库必填,可与源仓库相同)
- 设置目标 App(淘鲜达 / 盒马)、文件前缀、最低版本、操作人
- 勾选要迁移的
.mist 文件
- 勾选发布选项(git commit / push / 发布到平台)
- 点击 「开始迁移」
🏷️ 命名规则
| 类型 |
源名称 |
目标前缀 txd 下的建议名 |
| DX |
hm_ai_clarify_card |
txd_ai_clarify_card |
| DX |
hema_ai_img |
txd_ai_img |
| DX |
foo_bar |
txd_foo_bar |
| Mist |
HEMA@search_main.mist |
TXD@search_main.mist |
- DX:以
hm_ / hema_ 开头的去掉该前缀再拼目标前缀;其他直接前置目标前缀
- Mist:替换
@ 前的 App 前缀(盒马=HEMA、淘鲜达=TXD)
- 目标前缀可从目标工程名推断(如
TXDDinamicXTemplate → txd)
- 注意:DX 模板名在平台全局唯一,目标名不能与已有模板(含源模板)重名,否则创建会失败
💾 仓库映射缓存
每次手动选择目标仓库后,插件会记录「源仓库 → 目标仓库」的对应关系(存于 VSCode globalState,跨工作区、重启不丢失)。下次识别到相同源仓库时,自动回填目标仓库,无需重复选择。
- DX 映射键:
dxMigrate.dxRepoMap
- Mist 映射键:
dxMigrate.mistRepoMap
⚠️ 前置依赖与注意事项
- dx-cli:DX 迁移依赖
dx-cli(默认从 PATH 或 /usr/local/bin/dx-cli 查找),需先执行 dx-cli login 登录
- DX 发布:要求代码已 commit 并 push 到远端仓库(服务端会拉取远端代码构建),勾选发布时建议保持 commit + push 开启
- 正式发布(release) 请谨慎勾选
- Mist 发布:默认上传到预发平台(
pre-hema-template.alibaba-inc.com)
🛠️ 开发与构建
npm install # 安装依赖
npm run compile # 编译 TypeScript 到 out/
npm run watch # 监听模式
npx vsce package # 打包为 .vsix
项目结构
dx-migrate/
├── package.json # 插件清单(命令 / 活动栏视图 / 入口)
├── tsconfig.json
├── media/
│ ├── icon.svg # 活动栏图标
│ └── webview.html # 迁移助手界面(HTML + 原生 JS)
└── src/
├── extension.ts # 激活入口,注册命令与视图
├── panel.ts # 编辑器标签页载体
├── viewProvider.ts # 侧边栏视图载体
├── controller.ts # 核心控制器(消息路由 / 缓存 / 编排)
├── dxMigrator.ts # DX 迁移引擎(dx-cli create/copy/publish)
├── mistMigrator.ts # Mist 迁移引擎(拷贝/上传/创建)
├── parser.ts # DX 工程 / Mist 仓库解析
├── rename.ts # 重命名建议规则
├── exec.ts # 命令执行 / git 辅助
├── webview.ts # 读取 webview.html
└── types.ts # 类型定义
📝 工作流程
DX 模板:读取源工程 cola.build → 用目标工程的 apps/biz/权限组调用 dx-cli create template(服务端注册并返回新 ID)→ 拷贝源模板 src/ → 把 pathConfig/dependencies 同步进新模板 cola.build → 可选 git 提交与 dx-cli publish。
Mist 模板:把源 .mist 文件按新名拷贝到目标仓库 → 可选 git 提交 → 上传文件到 CDN(uploadFileV2 得 md5)→ 调用 addTemplate 创建模板记录。