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

news2024/11/24 15:25:43

文章目录

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

前言

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS 生命周期结束指南

2019 年 9 月,Red Hat 宣布打算废止 CentOS,并将其替换为 CentOS Stream。 CentOS 7 和 8 是 CentOS Linux 的最终版本。CentOS 7 和 8 的生命周期结束日期为: CentOS 8 - 2021 年 12 月 31 日 CentOS 7 - 2024 年 6 月 30 日 相关内容推荐 点…

MySQL数据库存储引擎

MySQL数据库存储引擎 存储引擎概念 存储引擎也称为表类型 通过不同的技术比如说,存储机制,索引技巧,锁定水平等等,来提供不同的功能。 查看MySQL支持的存储引擎 show engines\G; 常用引擎比较 对事务有需求 innodb …

MySQL丢失更新问题的出现和解决

MySQL丢失更新问题的出现和解决 丢失更新问题(Lost Update)指的是两个或多个事务在读同一数据并基于此数据进行更新操作时,某些更新操作被覆盖或丢失。例如,事务A和事务B都读取了某个数据,然后事务A更新了该数据&…

谷歌Gemma 2:开源模型的新里程碑

引言: 在人工智能领域,谷歌一直是创新的先行者。最近,谷歌DeepMind团队在I/O Connect大会上发布了Gemma 2,这是其开源模型系列的最新力作,标志着AI技术的又一大步。 Gemma 2的前身,Gemma,已经因…

0-30 VDC 稳压电源,电流控制 0.002-3 A

怎么运行的 首先,有一个次级绕组额定值为 24 V/3 A 的降压电源变压器,连接在电路输入点的引脚 1 和 2 上。(电源输出的质量将直接影响与变压器的质量成正比)。变压器次级绕组的交流电压经四个二极管D1-D4组成的电桥整流。桥输出端…

中电金信:时代有命题,运营有答案——咨询服务为金融机构运营加上智慧“基因”

这两年,很多搞运营的“卷王”都开始迷茫了 原因其实没别的:时代变了 与此同时,条线集中趋于成熟 跨条线共享障碍多多 运营模式创新所带来的变革红利 也达到了发展瓶颈 想破局就必须引入一些新“变量” 基于中电金信多年来对银行业的实践…

多行业预约门店服务小程序源码系统 支持多门店预约 带完整的安装代码包以及搭建教程

系统概述 该系统基于先进的云计算和大数据技术,采用模块化设计,具有高度的可扩展性和可定制性。无论是餐饮、美容美发、健身房还是其他服务行业,都可以通过该系统轻松实现多门店预约功能。同时,我们还提供了丰富的接口和插件&…

Linux防火墙【SNAT,DNAT】

NAT: 支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链 请求报文:修改源/目标IP, 响应报文:修改源/目标IP,根据跟踪机制自动实现 NAT的实现分为下面类型: SNAT:source…

goLang小案例-获取从控制台输入的信息

goLang小案例-获取从控制台输入的信息 1. 案例代码展示 package mainimport ("bufio""fmt""log""os" )var pl fmt.Printlnfunc main() {//控制台输出欢迎提示pl("Hello Go")fmt.Print("what is your name? ")…

【技术追踪】SDSeg:医学图像的 Stable Diffusion 分割(MICCAI-2024)

这医学图像分割领域啊,终究还是被 Stable Diffusion 闯进去了~ SDSeg:第一个基于 Stable Diffusion 的 latent 扩散医学图像分割模型,在五个不同医学影像模态的基准数据集上超越了现有的最先进方法~ 论文:Stable Diffusion Segmen…

安宝特分享 | 数字化革命,AR技术打造智慧城市的未来

随着城市化进程的加速和科技创新的不断推进, AR技术正逐步融入智慧城市建设的方方面面,为城市居民提供更智能、便捷、舒适的生活体验,开启了智慧城市的新时代。 01 优化城市规划与建设 AR技术在城市规划和建设中发挥着重要作用。城市规划师和…

leetcode提速小技巧

据我所知,leetcode可能是按最难那个用例给你打分的,非难题的用时好坏不完全看复杂度,因为可能都差不多,O(n/2)和O(n)虽然都是O(n),但是反应到成绩上是不同的,所以,尽可能的在条件足够的情况下提…

宏集物联网工控屏通过 S7 ETH 协议采集西门子 1200 PLC 数据

前言 为了实现和西门子PLC的数据交互,宏集物联网HMI集成了S7 PPI、S7 MPI、S7 Optimized、S7 ETH等多个驱动来适配西门子200、300、400、1200、1500、LOGO等系列PLC。 本文主要介绍宏集物联网HMI如何通过S7 ETH协议采集西门子1200 PLC的数据,文中详细介…

JVM专题五:类加载器与双亲委派机制

通过上一篇Java的类加载机制相信大家已经搞明白了整个类加载从触发时机,接着我们就来看下类加载器,因为类加载机制是有加载器实现的。 类加载器的分类 启动类加载器 Bootstrap ClassLoader 是 Java 虚拟机(JVM)的一部分&#x…

Sqlserver双活

要实现Sqlserver双活不是一件简单的事情,什么是双活,就是两边都活着,两边都可以访问,也就是A服务器部署一个sqlserver服务,B服务器部署一个sqlserver服务,两边数据双向同步保持一致,当A数据库服…

web前端之文档流、浮动、定位详解

目录 一、文档流 二、浮动 1.添加浮动 2.清除浮动 三、定位 1.相对定位 2.绝对定位 一、文档流 什么是文档流? ● 文档流指的是文档中的标签在排列时所占用的位置。 将窗体自上而下分成一行行 ,并在每 行中按从左至右的顺序排放标签&#xff0c…

智慧校园-学工管理系统总体概述

智慧校园学工管理系统是高等教育机构内部管理不可或缺的一部分,它通过集成信息技术,全面覆盖学生从入学至毕业的各类事务,旨在优化学生工作流程,强化管理效率,同时深化学生与学校间的互动,确保学生需求得到…

【红帽战报】6月RHCE考试喜报!

往期战报回顾: 点击查看【战报】5月RHCE考试喜报!通过率100% 点击查看【战报】4月份红帽考试战报! 点击查看【战报】PASS!PASS!2023年终来一波RHCE考试 微思网络-红帽官方授权合作伙伴!面向全国招生&…

【华为战报】5月、6月HCIP考试战报!

华为认证:HCIA-HCIP-HCIE 点击查看: 【华为战报】4月 HCIP考试战报! 【华为战报】2月、3月HCIP考试战报! 【华为战报】11月份HCIP考试战报! 【HCIE喜报】HCIE备考2个月丝滑通关,考试心得分享&#xff…

项目管理中常见的6种度量指标,你知道吗?

在项目管理中,为了有效地监控和控制项目的进展、成本、质量等方面,我们通常会采用一系列的度量指标。这些度量指标不仅可以帮助项目经理了解项目的当前状态,还能预测未来的趋势,从而作出相应的决策。以下是六种常见的项目度量数据…