关闭uni-app多端同步编译需三步:一删manifest.json中非目标平台字段(如只留"mp-weixin":{});二用// #ifdef等条件编译隔离平台专属代码;三CLI项目需修改package.json scripts为单平台命令并指定运行。

uni-app 项目里怎么关掉多端同步编译
uni-app 默认开启多端同步编译(即一个 vue 文件同时编译到微信小程序、H5、App 等多个平台),但如果你只想针对某端开发、调试,或想避免跨端样式/逻辑冲突,就得主动关闭它。关键不是“禁用编译”,而是**切断多端共用同一份源码的自动映射行为**。
删掉 manifest.json 里的多平台配置
多端同步编译的开关实际由 manifest.json 中的 mp-weixin、mp-alipay、h5、app-plus 等字段控制。只要这些字段存在且值为 true 或对象,HBuilderX / CLI 就会尝试编译到对应平台。
- 打开
manifest.json - 把不需要的平台字段整行删掉,比如暂时不开发支付宝小程序,就删掉
"mp-alipay": {}这一行 - 如果只保留 H5,就只留
"h5": {};如果只跑微信小程序,就只留"mp-weixin": {} - 注意:删完后需重启 HBuilderX 或重新运行
npm run dev:mp-weixin类命令,否则缓存可能让旧配置继续生效
用条件编译屏蔽非目标平台代码
即使保留了多端配置,你也可以用条件编译让某段代码只在特定平台生效,变相实现“单端逻辑隔离”。这不是取消编译,但能防止跨端误执行。
- 用
// #ifdef MP-WEIXIN包裹微信小程序专属逻辑 - 用
// #ifndef H5排除 H5 平台的代码块 - 注意:条件编译只作用于 JS/CSS/模板,对
pages.json和manifest.json无效 - 常见误操作:在
script标签里写/* #ifdef MP-WEIXIN */—— 必须用双斜杠//,否则不生效
CLI 项目中改 package.json 的 scripts
如果你用的是 CLI 而非 HBuilderX,真正的“取消同步编译”体现在启动命令上。默认的 npm run dev 可能同时触发多端,需要拆解。
- 检查
package.json的scripts字段 - 删掉或注释掉类似
"dev": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin,mp-alipay,h5 vue-cli-service uni-build"这种逗号分隔多平台的命令 - 只保留单平台命令,例如:
"dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-serve" - 运行时必须明确指定平台:
npm run dev:mp-weixin,不能只跑npm run dev
真正容易被忽略的是:哪怕你删了所有平台配置,HBuilderX 仍可能根据项目历史缓存自动补全。遇到“删了配置还编译多端”的情况,请手动清空 unpackage/ 目录,并在 HBuilderX 中点击「运行」→「清除缓存并重新运行」。


















