uni-app通过配置package.json实现环境变量、自定义条件编译

文章目录

      • 前言
        • 官方提示
        • 使用方法
        • 微信小程序配置如下
        • 自定义条件编译使用方法

前言

uni-app 官方概括 官方文档
在开发web时,有时需要一套代码编译发布到不同的站点,比如主站和微信h5站。(注意不是一套代码内部自适应不同浏览器,是真的分离部署了不同的网站)
在开发小程序时,经常有扩展小程序平台,比如基于阿里小程序的钉钉小程序、淘宝小程序。

uni-app 通过在package.json文件中增加uni-app扩展节点,可实现自定义条件编译平台。

扩展平台后有3点影响

  1. 可以在代码里编写自定义的条件编译,为这个新平台编写专用代码
  2. 运行时可以执行面向新平台的编译运行
  3. 发行时可以执行面向新平台的编译发行

注意只能扩展web和小程序平台,不能扩展app打包。

官方提示
{
    "uni-app": {// 扩展配置
        "scripts": {
            "custom-platform": { //自定义编译平台配置,可通过cli方式调用
                "title":"自定义扩展名称", // 在HBuilderX中会显示在 运行/发行 菜单中
                "browser":"",  //运行到的目标浏览器,仅当UNI_PLATFORM为h5时有效
                "env": {//环境变量
                    "UNI_PLATFORM": "",  //基准平台
                    "MY_TEST": "", // ... 其他自定义环境变量
                 },
                "define": { //自定义条件编译
                    "CUSTOM-CONST": true //自定义条件编译常量,建议为大写
                }
            }
        }    
    }
}

  • UNI_PLATFORM仅支持填写uni-app默认支持的基准平台,目前仅限如下枚举值:h5mp-weixinmp-alipaymp-baidump-toutiaomp-qq
  • browser 仅在 UNI_PLATFORMh5 时有效:chromefirefoxieedgesafarihbuilderx
  • package.json 文件中不允许出现注释,否则扩展配置无效
  • vue-cli需更新到最新版,HBuilderX需升级到 2.1.6+ 版本
使用方法

package.json 文件中配置

如果你项目的文件目录下没有这个文件的话。在文件目录下打开终端窗口。

执行

npm init

一直摁回车健就可以了
	"uni-app": {
		"scripts": {
			"dev-h5": {
				"title": "开发环境H5",
				"BROWSER": "chrome",
				"env": {
					"UNI_PLATFORM": "h5",
					"UNI_APP_URL": "https://www.test.com",
					"UNI_BASE_URL": "https://www.base.com"
				},
				"define": {
					"DEV-H5": true
				}
			},
			"prod-h5": {
				"title": "生产环境H5",
				"BROWSER": "chrome",
				"env": {
					"UNI_PLATFORM": "h5",
					"UNI_APP_URL": "https://www.test.com"
				},
				"define": {
					"PROD-H5": true
				}
			}
		}
	}

结构是这样的
在这里插入图片描述

使用我们的环境变量也很简单(环境变量可以配置多个)

console.log(process.env.UNI_APP_URL)

在这里插入图片描述

注意:如果修改了 package.json 文件的话,记得重启一下项目

微信小程序配置如下
{
	"uni-app": {
		"scripts": {
			"dev-wechat": {
				"title": "开发环境微信小程序",
				"env": {
					"UNI_PLATFORM": "mp-weixin",
					"UNI_APP_URL": "https://www.test.com"
				},
				"define": {
					"DEV-WECHAT": true
				}
			},
			"prod-wechat": {
				"title": "生产环境微信小程序",
				"env": {
					"UNI_PLATFORM": "mp-weixin",
					"UNI_APP_URL": "https://www.test.com"
				},
				"define": {
					"PROD-WECHAT": true
				}
			}
		}
	}
}

运行项目以及打包发行操作

在这里插入图片描述

在这里插入图片描述

自定义条件编译使用方法

官方文档

// 只在开发环境H5运行包含的代码
// #ifdef DEV-H5
需要条件编译的代码
// #endif

// 只在H5环境中运行
// #ifdef H5
需要条件编译的代码
// #endif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/754227.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

贾英才主任的中医探索之路

在北京崇文门中医医院,贾英才主任在中医领域的钻研从未停歇。他对药理的探究和药物搭配的研究,展现出了非凡的专注与执着。 贾英才主任常常埋首于浩瀚的中医典籍之中,逐字逐句地研读古代名医的论述,试图从那些古老的智慧中汲取精…

第十九课,编写并调用自定义函数

一,函数五大组成部分 因为其重要性故再此强调,参数列表可以为任意个数,返回值只能有一个(请初学者暂时这样认为) 特殊的,如果不需要返回结果,用None替代! 二,编写自定义…

BUUCTF--WEB

首頁 - OWASP Top 10:2021 [极客大挑战 2019]EasySQL 类型:sql注入 使用万能密码 flag{f580db5b-c0c9-4b13-bfb6-adfa525c93f5} [极客大挑战 2019]Havefun 类型:代码审计 F12打开浏览器控制台 GET请求,在url添加参数/?cat=dog访问 返回flag{f60c7d5c-9f44-4e92-88c0…

操作系统期末复习(对抽象概念的简单形象化)

操作系统 引论 定义与基本概念:操作系统是计算机硬件与用户之间的桥梁,类似于家中的管家,它管理硬件资源(如CPU、内存、硬盘),并为用户提供方便的服务(应用程序执行、文件管理等)。…

三星DRAM、NAND,“又双叒叕”带头涨价了

据韩国媒体《每日经济新闻》报道,三星电子计划在第三季度上调服务器DRAM和企业级NAND闪存的价格,涨幅预计在15%-20%,主要受人工智能(AI)需求激增的推动。这一举措有望提振公司下半年业绩。 据《经济日报》报道援引业内消息,由于厂…

数据资产赋能企业决策:通过精准的数据分析和洞察,构建高效的数据资产解决方案,为企业提供决策支持,助力企业实现精准营销、风险管理、产品创新等目标,提升企业竞争力

一、引言 在信息化和数字化飞速发展的今天,数据已成为企业最宝贵的资产之一。数据资产不仅包含了企业的基本信息,还蕴含了丰富的市场趋势、消费者行为和潜在商机。如何通过精准的数据分析和洞察,构建高效的数据资产解决方案,为企…

使用QGIS进行研究区域制图实战

目录 前言 一、QGIS的版本和数据介绍 1、关于QGIS版本 2、需要准备的数据 二、准备制图 1、制作全国区位图 2、矢量和遥感信息的编辑 三、出图编辑 1、设置主题信息 2、打印布局制作 3、美化地图 总结 前言 俗话说“一图胜千言”,在地理信息的领域中&…

利用代理IP实现高效大数据抓取的策略与技巧

在当今信息爆炸的时代,数据对于各行各业都至关重要。而数据的获取往往需要通过网络爬取。然而随着网络安全意识的提高和反爬虫机制的加强,传统的数据爬取方式可能会受到限制。在这种情况下,代理IP技术的应用就显得尤为重要。本文将探讨代理IP…

Java编程基本功大揭秘 | 详解深入分析Java线程池源码和底层原理,掌握实战技巧【1】

详解深入分析Java线程池源码和底层原理 文章大纲引言Java线程池概念及重要性 ThreadPoolExecutor类的概述ThreadPoolExecutor类的基本功能和作用**基本功能****核心作用** ThreadPoolExecutor主要构造函数及其参数继承关系链功能介绍ThreadPoolExecutor 构造器构造器参数构造器…

SysML与MBSE的关系

SysML与MBSE的关系 对于任何基于模型的系统工程 (MBSE) 方法,推荐的最佳实践是基于模型的语言、基于模型的工具、基于模型的流程和基于模型的架构框架的协同应用,如下图所示 系统架构四元组 图。经过十年将SysML应用于棘手的系统…

MATLAB算法实战应用案例精讲-【数模应用】线性判别分析(附MATLAB、python和R语言代码实现)

目录 前言 算法原理 什么是判别分析 线性判别分析(LDA) 数学模型 二分类 多分类LDA ​编辑 算法思想: 费歇(FISHER)判别思想 贝叶斯(BAYES)判别思想 LDA算法流程 LDA与PCA对比 SPSSPRO 1、作用 2、输入输出描述 3、案例示例 4、案例数据 5、案例操作 …

MySQL高级-SQL优化- update 优化(尽量根据主键/索引字段进行数据更新,避免行锁升级为表锁)

文章目录 0、update 优化1、创建表2、默认是行锁3、行锁升级为表锁4、给name字段建立索引 0、update 优化 InnoDB的行锁是针对索引加的锁,不是针对记录加的锁,并且该索引不能失效,否则会从行锁升级为表锁。 1、创建表 create table course(…

【Python机器学习实战】 | 基于支持向量机(Support Vector Machine, SVM)进行分类和回归任务分析

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

物联网 IoT 收录

物联网IoT日常知识收录 thingsboard, nodered是国际大品牌, iotgateway是国内的, 几个scada, pyscada, json-scada都还不错,比较一下。thingsboard-gateway是python系的,如果你愿意,可以用这个作为公司的物联网网关。…

圈子系统搭建教程,以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP小程序H5

圈子是一款社区与群组的交友工具。你可以在软件内创造一个兴趣的群组从而达到按圈子来交友的效果用户可以根据自己的兴趣爱好。 1. 创建圈子 轻松创建专属圈子,支持付费型社群。 2. 加入圈子 加入不同圈子,设置不同名片,保护隐私。 3. 定…

【笔记】echarts图表的缩放和鼠标滚动冲突的处理解决方案

解决方案不是很好,来源于github的issue,官方提供了,组合键触发缩放的功能。 https://github.com/apache/echarts/issues/5769 https://echarts.apache.org/zh/option.html#dataZoom-inside.zoomOnMouseWheel dataZoom-inside.zoomOnMouseWhe…

java基于ssm+jsp 多人命题系统

1管理员功能模块 管理员登录,管理员通过输入用户、密码等信息进行系统登录,如图1所示。 图1管理员登录界面图 管理员对个人中心进行操作填写原密码、新密码、确认密码并进行添加、删除、修改以及查看,如图2所示。 图2个人信息功能界面图 学…

鸿蒙UI开发快速入门 —— part12: 渲染控制

如果你对鸿蒙开发感兴趣,加入Harmony自习室吧~👇🏻👇🏻👇🏻👇🏻 扫描下面的二维码关注公众号。 1、前言 在声明式描述语句中开发者除了使用系统组件外,还可…

次世代霍尔电磁摇杆搭配磁悬浮马达,这款手柄手感超丝滑,谷粒金刚3Pro体验

燥热的天气里,周末在家打上几局游戏,确实更容易放松身心,玩游戏的时候,键鼠、手柄一类的游戏外设特别重要,对我们的游戏体验影响很大,所以挑选起来总是格外挑剔。现在国产的游戏手柄已经今非昔比了&#xf…

中国航天:星舰与猛禽发动机数据分析

文章目录 MainReference Main 马斯克坚信,随着星舰的全面投入运营,SpaceX将能够承担地球上主轨道超过99%的载荷质量。这款第三代星舰的起飞推力将跃升至10000吨以上,其有效载荷质量亦将高达200吨以上。 不仅如此,每次发射的成本控…