uni-app ext.json文件中写条件编译的代码无效。
uni-app ext.json文件中写条件编译的代码无效。
示例代码:
代码见bug描述中的截图
操作步骤:
在hbuilder中ext.json文件中编写条件编译的代码。然后在微信开发者工具和抖音开发者工具中分别查看ext.json文件。
预期结果:
按写的条件编译分别生成各个平台代码
实际结果:
各个平台的代码都一样
bug描述:
ext.json文件中写条件编译的代码无效。



更多关于uni-app ext.json文件中写条件编译的代码无效。的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app ext.json文件中写条件编译的代码无效。的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中,ext.json 文件通常用于配置小程序的扩展功能或自定义组件等。条件编译是 uni-app 中常用的功能,但条件编译的代码通常是写在 .vue 文件或 .js 文件中,而不是在 ext.json 文件中。
如果你希望在 ext.json 文件中根据不同的平台或环境进行条件配置,ext.json 本身并不支持直接的条件编译语法。不过,你可以通过以下几种方式来实现类似的效果:
1. 在 pages.json 或 manifest.json 中使用条件编译
uni-app 支持在 pages.json 或 manifest.json 中使用条件编译。你可以在这些文件中使用 #ifdef 和 #ifndef 来根据平台或环境进行条件配置。
例如,在 pages.json 中:
{
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页"
}
},
// #ifdef MP-WEIXIN
{
"path": "pages/wechat/wechat",
"style": {
"navigationBarTitleText": "微信小程序"
}
},
// #endif
// #ifdef H5
{
"path": "pages/h5/h5",
"style": {
"navigationBarTitleText": "H5页面"
}
}
// #endif
]
}
2. 动态生成 ext.json
如果你确实需要在 ext.json 中根据不同的平台或环境进行配置,可以通过在构建过程中动态生成 ext.json 文件。你可以使用脚本来根据不同的条件生成不同的 ext.json 文件。
例如,使用 Node.js 脚本:
const fs = require('fs');
const path = require('path');
const platform = process.env.UNI_PLATFORM; // 获取当前平台
let extConfig = {};
if (platform === 'mp-weixin') {
extConfig = {
// 微信小程序特定的配置
};
} else if (platform === 'h5') {
extConfig = {
// H5 特定的配置
};
}
fs.writeFileSync(path.resolve(__dirname, 'ext.json'), JSON.stringify(extConfig, null, 2));
然后在 package.json 中添加脚本:
{
"scripts": {
"build:mp-weixin": "UNI_PLATFORM=mp-weixin node generateExtJson.js && uni build -p mp-weixin",
"build:h5": "UNI_PLATFORM=h5 node generateExtJson.js && uni build -p h5"
}
}
3. 使用 uni-app 的 process.env 变量
你可以在代码中使用 process.env.UNI_PLATFORM 来判断当前平台,然后根据不同的平台动态设置配置。
例如:
const platform = process.env.UNI_PLATFORM;
if (platform === 'mp-weixin') {
// 微信小程序特定的逻辑
} else if (platform === 'h5') {
// H5 特定的逻辑
}

