uni-app中配置自定义条件编译

前提:官网提供的自定义编译不满足条件

package.json | uni-app官网

下文:不详细写,主要写关键思路

package.json文件

主要看scripts的执行命令,其他依赖就是用vue-cli方式创建uni-app项目生成的

复制代码
{
  "name": "uniapp",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "npm run h5:dev",
    "h5:dev": "cross-env NODE_ENV=development UNI_PLATFORM=h5 node './cx.js' && vue-cli-service uni-serve ",
  },
  "dependencies": {
    "@dcloudio/uni-app": "^2.0.2-3080420230530001",
    "@dcloudio/uni-app-plus": "^2.0.2-3080420230530001",
    "@dcloudio/uni-h5": "^2.0.2-3080420230530001",
    "@dcloudio/uni-i18n": "^2.0.2-3080420230530001",
    "@dcloudio/uni-mp-360": "^2.0.2-3080420230530001",
    "@dcloudio/uni-mp-alipay": "^2.0.2-3080420230530001",
    "@dcloudio/uni-mp-baidu": "^2.0.2-3080420230530001",
    "@dcloudio/uni-mp-jd": "^2.0.2-3080420230530001",
    "@dcloudio/uni-mp-kuaishou": "^2.0.2-3080420230530001",
    "@dcloudio/uni-mp-lark": "^2.0.2-3080420230530001",
    "@dcloudio/uni-mp-qq": "^2.0.2-3080420230530001",
    "@dcloudio/uni-mp-toutiao": "^2.0.2-3080420230530001",
    "@dcloudio/uni-mp-vue": "^2.0.2-3080420230530001",
    "@dcloudio/uni-mp-weixin": "^2.0.2-3080420230530001",
    "@dcloudio/uni-mp-xhs": "^2.0.2-3080420230530001",
    "@dcloudio/uni-quickapp-native": "^2.0.2-3080420230530001",
    "@dcloudio/uni-quickapp-webview": "^2.0.2-3080420230530001",
    "@dcloudio/uni-stacktracey": "^2.0.2-3080420230530001",
    "@dcloudio/uni-stat": "^2.0.2-3080420230530001",
    "@vue/shared": "^3.0.0",
    "autoprefixer": "^8.0.0",
    "core-js": "^3.8.3",
    "flyio": "^0.6.2",
    "pixi.js": "^7.2.4",
    "postcss-loader": "^7.3.3",
    "vue": ">= 2.6.14 < 2.7",
    "vuex": "^3.2.0",
    "weapp-adapter": "^1.0.0"
  },
  "devDependencies": {
    "@dcloudio/types": "^3.3.2",
    "@dcloudio/uni-automator": "^2.0.2-3080420230530001",
    "@dcloudio/uni-cli-i18n": "^2.0.2-3080420230530001",
    "@dcloudio/uni-cli-shared": "^2.0.2-3080420230530001",
    "@dcloudio/uni-helper-json": "*",
    "@dcloudio/uni-migration": "^2.0.2-3080420230530001",
    "@dcloudio/uni-template-compiler": "^2.0.2-3080420230530001",
    "@dcloudio/vue-cli-plugin-hbuilderx": "^2.0.2-3080420230530001",
    "@dcloudio/vue-cli-plugin-uni": "^2.0.2-3080420230530001",
    "@dcloudio/vue-cli-plugin-uni-optimize": "^2.0.2-3080420230530001",
    "@dcloudio/webpack-uni-mp-loader": "^2.0.2-3080420230530001",
    "@dcloudio/webpack-uni-pages-loader": "^2.0.2-3080420230530001",
    "@pixi/unsafe-eval": "^7.2.4",
    "@vue/cli-plugin-babel": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "babel-plugin-import": "^1.11.0",
    "cross-env": "^7.0.2",
    "jest": "^25.4.0",
    "mini-types": "*",
    "miniprogram-api-typings": "*",
    "postcss": "^8.4.24",
    "postcss-comment": "^2.0.0",
    "vue-template-compiler": ">= 2.6.14 < 2.7",
    "weapp-pixi-adapter": "^0.2.0"
  },
  "browserslist": [
    "Android >= 4.4",
    "ios >= 9"
  ],
  "uni-app": {

  }
}

ct.js

javascript 复制代码
const fs=require("fs");
let path=require("path");
function replacePlugin(){
    let pluginPath=path.resolve(__dirname,"./node_modules/@dcloudio/uni-cli-shared/lib/plugin.js");
    let copyPluginPath=path.resolve(__dirname,"./node_modules/@dcloudio/uni-cli-shared/lib/copyplugin.js");
    let defaultPlugin=fs.readFileSync(pluginPath,'utf8');
    let checkDir = fs.existsSync(copyPluginPath);
    if(!checkDir){
        fs.writeFileSync(copyPluginPath,defaultPlugin);
    }else{
        defaultPlugin=fs.readFileSync(copyPluginPath,'utf8');
    }
    let a='process.UNI_SCRIPT_DEFINE={"WOBUGUAN":true,"WOBUGUAN2":false};';//你自己需要的自定义编译条件
    fs.writeFileSync(pluginPath,a+defaultPlugin);
}
replacePlugin();

条件编译起作用的地方在这个地方node_modules/@dcloudio/uni-cli-shared/lib/plugin.js文件的这里

这里的取值,在vue-cli-service执行时就完成了,所以在执行前做变量赋值,替换文件,

这里的ct.js文件中的a是你需要自定义 process.UNI_SCRIPT_DEFINE赋值内容

index.vue文件

javascript 复制代码
<script>
export default{
    created(){
        console.log(2222)
        //#ifdef WOBUGUAN2
        console.log("WOBUGUAN2")
        //#endif
        //#ifdef WOBUGUAN
        console.log("WOBUGUAN");
        //#endif
    }
}
</script>

此时自定义条件编译就完成了!!!

虽然不太合理,修改node-module,但没找到别的办法

相关推荐
酸奶弄死你1 小时前
uniapp调用后台接口
uni-app·前后端
游戏开发爱好者89 小时前
iOS IPA 上传工具全面解析,从 Transporter 到开心上架(Appuploader)命令行的高效上架实践
android·ios·小程序·https·uni-app·iphone·webview
半开半落21 小时前
uniapp通过npm使用第三方库兼容微信小程序
微信小程序·npm·uni-app
随笔记1 天前
HbuilderX载入项目,运行后唤起微信开发者工具,提示:Error: Fail to open IDE,唤醒不起来怎么办
javascript·微信小程序·uni-app
Lsx_1 天前
一文读懂 Uniapp 小程序登录流程
前端·微信小程序·uni-app
夏目友人爱吃豆腐1 天前
uniapp源码解析(Vue3/Vite版)
前端·vue.js·uni-app
2501_915106321 天前
iOS 抓包全流程指南,HTTPS 抓包、TCP 数据流分析与多工具协同的方法论
android·tcp/ip·ios·小程序·https·uni-app·iphone
邱泽贤1 天前
uniapp 当前页调用上一页的方法
前端·javascript·uni-app
集成显卡1 天前
AI取名大师 | uni-app 微信小程序打包 v-bind、component 动态组件问题
人工智能·微信小程序·uni-app
anyup2 天前
支持鸿蒙!开源三个月,uView Pro 开源库近期更新全面大盘点,及未来计划
前端·vue.js·uni-app