在 Linux 上折腾微信小程序开发:几种可行方案和踩坑记录
官方小程序开发者工具只有 Windows 版和 Mac 版,Linux 一直没动静。如果开发环境就是 Ubuntu 之类的系统,这事就得自己想办法兜底了。
下面这些方案我基本都试过或围观过,各有各的代价。
先摊开说几种路数。
一种是用 VS Code 纯手写代码。本机编辑、语法高亮、代码片段都没问题,但没办法实时预览和调试,得另外找台 Windows 或 Mac 机器去跑官方工具看效果、调样式、真机预览,最终发布也一样。这条路适合把 Linux 当主力编码环境的人,缺点就是调试过程要切机器或者靠远程。
一种是 wine 硬跑官方 Windows 版工具。看网上有人这么干过,但实际体验非常糟。
微信开发者工具底层是 Electron,在 wine 的兼容性完全看脸,常见的就是启动即崩溃、界面卡死,或者扫码登录没反应。临时看一眼可能侥幸,正经干活绝对不推荐。
虚拟机或者双系统方案算是功能最完整的一条路。宿主机上开个 Windows 虚拟机,里面装好官方工具,开发流程跟在 Windows 上没区别,预览、调试、上传都可以做。代价就是要吃一部分内存,并且如果主力系统是 Linux,来回切换还是有点烦。
还有一种是远程协作,自己手边有一台 Windows 设备(或者云主机),本地 Linux 写代码,通过 Git 同步过去,再用远程桌面或 SSH 连过去操作开发者工具。
团队里如果本来就有一台公共的 Windows 调试机,用起来会比较顺。
现在展开说一下 VS Code 手动开发的具体配置。这部分其实不复杂。
插件至少要装两个:一个叫“WXML - WeChat Mini Program”,主要提供 wxml 文件的高亮和部分补全;另一个是“WeChat Snippet”,能快速生成小程序常用 API 的代码片段。有了这俩,写 wxml、wxss、js 基本不会太瞎。
项目结构跟官方模板差不多,根目录放 app.js、app.json、app.wxss,下面建一个 pages 目录,每个页面再分 index.js、index.wxml、index.wxss 之类的。目录结构靠自己手动维护就好,不借助 CLI 生成也不会太麻烦。
如果项目依赖比较多,可以考虑接上 webpack 或 gulp 做构建。
入口指定为 app.js,输出到 dist 目录,其余配置就是普通前端工程那套东西,没什么特殊的。不想折腾构建工具的话,直接写源码也能跑,就是代码组织上自己多留心。
整体开发流程是这样:在 Linux 上写完代码,提交到 git 仓库,然后到一台 Windows 或 Mac 设备上拉取最新代码,用官方开发者工具打开项目,进行真机预览、调试,确认没问题后上传发布。如果手边没有多余物理机,开个 Windows 虚拟机专门干这个事是个比较实用的折中。
再回头说 wine 那条路。安装就是 apt install wine,然后下载微信开发者工具的 Windows 安装包,用 wine 运行它。但说白了,跑起来的概率不大,登录环节尤其容易栽,线上真要依赖这个调试基本会耽误事。想试试的话可以当玩,别把它当正式开发环境。
虚拟机这边就比较稳了,VirtualBox 或 VMware 装个 Windows 10,分个 4G 到 8G 内存,里面跑官方工具是完全可以的。
唯一的别扭还是上下文切换——在 Linux 里改代码,切到虚拟机里看效果,感官上延迟挺明显。
如果团队有现成的 Windows 远程主机,直接用 ssh 连过去,或者用远程桌面,把代码目录通过 git 保持同步,这也算一套可行流程。
之前有段时间我就是本地 Ubuntu 写代码,推送到公司内网一台 Win 机器上,再远程过去开工具调试,除开网络延迟影响操作手感,其余都还好。
最后提一下目前社区的情况。
一直有人呼吁腾讯出 Linux 版的开发者工具,但到现在还没实质性动静。GitHub 上可以搜“wechat mini program linux”,能看到一些第三方项目试图补齐这个缺口,不过大多停留在早期阶段,暂时还不能当生产工具用。
综合考虑,如果是 Ubuntu 主力开发,比较靠谱的组合还是 VS Code 编码 + 虚拟机或远程 Windows 做预览和发布。代码管理走 git,同步用 rsync 或 git pull 都行,配好 ssh 密钥可以省不少事。
来此加密支持不同类型的证书有效期管理。通域名类证书的有效期为90天,而IP类证书的有效期为7天。为了应对较短的有效期,平台提供了全自动的重申机制。在证书即将到期时,会自动触发重新申请和部署流程。这种闭环式的管理方案,使用户不再需要为证书的频繁更新投入额外的人力。
整体上能比较顺畅地走下去,不至于因为缺一个 Linux 工具就卡住整个开发流程。

浙公网安备 33010602011771号