在 DSH 右边栏预览原生微信小程序,提供本地运行时与 WXML 源码定位。
安装
# Release 预构建包
dsh plugin --profile web add "https://github.com/zhxnix/dsh-wx-preview/releases/latest/download/dsh-wx-preview.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:zhxnix/dsh-wx-preview
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
dsh-wx-preview 是一个可移植的 DSH 插件,用于发现、预编译、打开和调试原生微信小程序项目。它读取用户指定目录中的 project.config.json 与 app.json,在本机启动浏览器兼容预览运行时,并把预览页放进 DSH 右侧栏。
它不依赖特定业务项目、固定端口、固定项目目录或用户目录;每次打开都使用工具参数传入的项目路径。目标项目源码只读,预览缓存写入独立的 DSH_WX_PREVIEW_HOME 目录(默认 ~/.dsh-wx-preview)。
能做什么
- 识别任意原生小程序项目,以及
miniprogramRoot指向的源码目录。 - 预编译页面、分包、组件、
WXML/WXSS/JS/JSON和常用wx.*API。 - 在 DSH 右栏启动可交互的本地预览,支持页面切换、返回、刷新和热更新。
- 提供 DSH 工具
wxpreview_discover、wxpreview_precompile、wxpreview_open、wxpreview_status、wxpreview_logs、wxpreview_update_identity和wxpreview_stop。 - DSH 右栏注释插件存在时,使用共享
BrowserPanel,面板类型为dsh-wx-preview,因此网页点选注释、连续多条注释、上下文批注、控制台和 DevTools 能复用同一套体验。 - 预览 DOM 会标注
data-dsh-source-file、data-dsh-source-line和data-dsh-source-kind="wxml",注释插件可以直接把被点元素映射回 WXML 源码。 - 没有注释插件时仍可使用独立 iframe 基础预览,并可手工输入一个 HTTP(S) 预览地址。
预览身份、storage、登录状态和 wx.getSetting/wx.authorize 结果只是本地 Fixture;插件不会调用真实微信登录、读取微信账号、写入 CloudBase 或修改项目源码。
安装和加载
市场收录申请中,当前可以从 GitHub Release 安装预构建包。条目计划提交到 awesome-dsh-plugin。非 managed profile 可使用 DSH CLI:
dsh plugin --profile web add \
https://github.com/zhxnix/dsh-wx-preview/releases/latest/download/dsh-wx-preview.tgz
将 web 换成你实际使用的非 managed profile。DSH Desktop 的 managed desktop profile 请使用本仓库提供的 checkout 安装器;安装后重启 DSH,并新建一个 session。
若同时安装 dsh-sidebar-annotations,建议先加载注释插件,再加载本插件;本插件会监听共享面板的热更新事件,二者可以独立升级。
DSH Desktop 请从 checkout 安装:
git clone https://github.com/zhxnix/dsh-wx-preview.git
cd dsh-wx-preview
npm install
node scripts/install.mjs --profile desktop
卸载时运行 node scripts/install.mjs --uninstall --profile desktop;安装器只处理本插件的链接和带标记的 loader 条目。
如果不使用上面的安装器,才手动在 DSH profile 的 cordis.patch.yml 中加入下面的条目(二选一,路径按实际 checkout 位置调整):
- insert:
- id: dsh-wx-preview
name: './plugins/dsh-wx-preview/lib/index.js'
其中 package.json 的 dsh.bundle.patch 和仓库根目录的 dsh.bundle.patch 是市场安装使用的标准 bundle 入口;手工 checkout 时使用上面的 profile 条目即可。
DSH 中使用
在会话中直接告诉 DSH:
发现 /Users/me/projects/example-mini
打开 /Users/me/projects/example-mini
模型会调用工具:
wxpreview_discover({ projectPath })
wxpreview_precompile({ projectPath, force? })
wxpreview_open({ projectPath, route?, port?, force? })
wxpreview_status({ projectPath?, sessionId? })
wxpreview_logs({ projectPath?, sessionId?, limit? })
wxpreview_update_identity({ projectPath, ...fixturePatch })
wxpreview_stop({ projectPath?, sessionId?, all? })
wxpreview_open 返回的 url/openInDshSidebar 是本机回环地址。它会按调用该工具的 DSH 会话保存面板映射;右栏请求 /dsh-wx-preview/config?sessionId=... 时只返回当前会话的预览,避免多个会话串项目。
命令行
插件也可以脱离 DSH 使用:
npm install
npx dsh-wx-preview discover ./my-mini-program
npx dsh-wx-preview precompile ./my-mini-program --force
npx dsh-wx-preview serve ./my-mini-program --route pages/index/index
serve 会启动一个本机服务并持续运行,按 Ctrl-C 停止。CLI 和 DSH 使用同一个预览引擎,但 CLI 不会加载 DSH 工具或右栏 UI。
项目要求
项目根目录需要包含 project.config.json 或 app.json。如果存在 project.config.json,插件按其中的 miniprogramRoot 找到源码目录;源码根目录必须有 app.json。app.json 至少声明一个 pages 页面。原生页面、组件和分包可以使用 .js、.ts、.json、.wxml、.wxss 和 .wxs 文件。
插件会明确拒绝 UniApp、Taro 等非原生项目。WXS、微信插件、Worker、地图、蓝牙、支付、Canvas、真实授权、CloudBase 和完整设备能力会在兼容性报告或运行时日志中提示;它们仍需要微信开发者工具或真机终验。
源码位置协议
编译器给每个由 WXML 元素产生的 DOM 元素写入:
data-dsh-source-file="/absolute/path/to/pages/index/index.wxml"
data-dsh-source-line="12"
data-dsh-source-kind="wxml"
这是模板元素的实际起始行,不是对 JS 业务逻辑的推断。自定义组件内部元素使用组件自己的 WXML 文件;组件宿主元素使用引用它的页面或组件 WXML 文件。第三方注释/调试插件可以只依赖这三个属性,不需要知道本插件的内部编译结构。
最小例子
仓库中的 examples/native-mini-miniprogram 是一个不依赖业务项目的原生小程序夹具:
npx dsh-wx-preview discover examples/native-mini-miniprogram
npx dsh-wx-preview precompile examples/native-mini-miniprogram
npx dsh-wx-preview serve examples/native-mini-miniprogram
开发和验证
npm install
npm run check
npm run self-test
npm test
验证只使用仓库内的最小夹具和临时缓存,不会启动或修改用户项目。
许可证和来源
本仓库新增的 DSH 宿主插件、右栏适配、通用会话管理、示例和文档采用 MIT,见 LICENSE。
最初的通用预览引擎改编自本地 DSH 开发环境中的 wxpreview 包,原作者为 zhao,并已授权本仓库以 MIT 许可证发布改编后的版本。来源说明见 NOTICE。npm 依赖保留各自许可证,不会被本插件重新授权。
链接
同类插件
yjh051108/dsh-routing-suite★ 7207
一个仓库三件套:DSH 插件包的运行时注入器(注入、热重载、卸载、开发侧挂区一键转正、路由自愈,外带设置页插件管理:列出、卸载、拖入文件夹内化)、任务感知的思维模式路由 agent 预设(router-standard / router-spec / router-react)、以及分级两级任务协议(commit_star / lock_stage / revise_do / edit_plan / mark_task / redteam_verdict 六个工具,任务状态落盘)。注入器实现直接在库内,安装的是它自己的行为而不是一份依赖清单。
strukto-ai/mirage#dsh★ 3654
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 321
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
weijiafu14/pi2dsh★ 204
Pi Host ABI 兼容引擎:装一次之后,npm 上的 Pi 扩展原包经 `dsh plugin add <pi-package>` 直接作为 DSH 原生插件挂载。已在官方 DSH 上端到端验证 pi-mcp-adapter(完整 MCP 管理面:OAuth、resources、prompts、MCP Apps、elicitation、sampling)、@tintinweb/pi-subagents、pi-code、pi-hermes-memory、pi-background-tasks;`pi2dsh inspect` 在安装前报告一个包的兼容情况。
lire1131/dsh-undo-savepoint★ 164
DSH 撤销/回退系统:配置变更自动存档,一键撤销/恢复/回退到任意版本,支持 WebUI 与离线 CLI/GUI 工具(DSH 启动失败也能救)。
Fishquito7/dsh-skill-mcp-panel★ 147
在 DSH Web 设置中管理技能与 MCP 服务器:技能卡片热启停、工作区作用域、分组、批量迁移与拖拽导入,以及 stdio/HTTP MCP 增删改查、连接测试、密钥脱敏,并附带统一 dsh-panel 命令行。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。