vite配置之获取.env.[mode]下的数据

需求

  • vite.config.ts获取配置文件下面的数据
  • .vue,.ts,.tsxsrc文件夹下面获取配置文件下面的数据

一、src/* .vue,.ts,.tsx 文件夹下面使用环境变量

之前webpack或者用的vue-cli我们在获取配置文件数据的时候通过process.env,但是在vite里面不能通过这种方式

vite需要通过import.meta.env.xxx,官方文档有说明,下面是vite内置的几个
在这里插入图片描述
但是实际的开发当中,我们还需要增加一些自定义的字段,如VITE_BASE_URL请求的url
这个时候我们可以在根目录下面新建一个.env.xxx文件,写入下面内容

VITE_BASE_URL = http://www.xxx.com

然后在我们的axios配置里面使用
在这里插入图片描述
这样是我完全没有问题的,假设我们是使用ts来开发的项目,我们就会发现,我们自定的字段ts并没有给我们有好的提示
在这里插入图片描述
虽然也可以用,但是我都用ts,你凭什么不给我提示?

其实关于配置文件里面自定义的字段,要想有提示官方给了一个明确的说明
在这里插入图片描述

所以我们可以新增一个.env.d.ts文件,然后把我们自定义的字段配置进接口即可,至于这个文件你想都放到哪个位置,具体还是要看tsconfig.json里面includes字段的配置
在这里插入图片描述

这个时候我们在使用的时候,就可以让vscode给我们有好的提示
在这里插入图片描述

二、vite.config.ts配置文件里面使用

在这里插入图片描述
官方文档有明确的说明,也就是说我们要想在vite.config.ts中去使用.env文件中的字段,我们需要使用loadEnv

import { defineConfig, loadEnv } from 'vite'export default defineConfig(({ command, mode }) => {// 根据当前工作目录中的 `mode` 加载 .env 文件// 设置第三个参数为 '' 来加载所有环境变量,而不管是否有 `VITE_` 前缀。const env = loadEnv(mode, process.cwd(), '')return {server: {host: '0.0.0.0',port: 2233,proxy: {'/api/': {target: env.VITE_PROXY_URL,ws: false,changeOrigin: true,rewrite: path => path.replace('/api', ''),},},},}
})

三、如何优雅的处理多个.env文件

如果我们的项目上线的环境比较多,或者再开发对接的时候要配置不同的环境,如

.env.dev
.env.test
.env.prod
.env.zhangsan
.env.lisi
.env.xxx

本身我们现在工程化开发的规范下,我们的根目录就会有了一堆的配置文件
在这里插入图片描述
这个时候我们再加一堆的.env文件配置就会显得混乱,所以有没有一种方案就是我们所有的.env文件放到一个叫env的文件夹下面呢?

在vite配置里面,有一个属性叫envDir
在这里插入图片描述
也就是说我们可以配置这个字段,让vite能够识别我们在env文件夹下面配置的文件,具体配置如下:
在这里插入图片描述
配置的时候注意一点,就是loadEnv的第二个参数,读取的路径要跟envDir路径一致

比如说我们在env文件夹下面新建了一个.env.test文件,并定义了一个VITE_PROXY_URL字段,用于跟不同的服务对接的时候处理跨域问题去做代理
在这里插入图片描述
然后我们还想在启动项目的时候通过命令去做一个区分,我们可以在package.json文件下的scripts里面新增

"dev:test": "vite --mode test"

这个时候我们在vite.config.ts中打印看一下
在这里插入图片描述
我们可以看到右侧终端中输出了test { VITE_PROXY_URL: 'http://xxx' }

这个时候我们在.env.test里面在新增一个字段VITE_APP_TITLE,可以看到

在这里插入图片描述
关于loadEnv参数

  • 第一个参数 mode vite --mode test 默认是development ,如果是运行打包命令的话默认就是production
  • 第二个参数 .env配置文件所在的路径,这个要根据envDir来,默认是根路径
  • 第三个参数 就是过滤以xxx开头的字段,默认是VITE_,如果是''空字符,就是获取全部

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

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

相关文章

Redis作者长文总结LLMs, 能够取代99%的程序员

引言 这篇文章并不是对大型语言模型(LLMs)的全面回顾。很明显,2023年对人工智能而言是特别的一年,但再次强调这一点似乎毫无意义。相反,这篇文章旨在作为一个程序员个人的见证。自从ChatGPT问世,以及后来使…

保姆级pycharm远程连接linux服务器

1、登录服务器,创建账号。 一般都是管理员账户登录,创建自己的账号。如果不需要,可跳过这步。 打开MobaXterm,点击左上角Session创建会话。 再点击左上角SSH,分别输入服务器ip和账号,最后点ok,进…

有声读物管理平台Booksonic-Air

老苏最近在听评书,所以想找个软件来管理和收听,找了一圈,感觉 Booksonic-Air 可能能满足老苏的需求。 什么是 Booksonic-Air ? Booksonic-Air 是一个用于流式传输有声读物的服务器,是原始 Booksonic 服务器的后继者。…

通过Vue3+高德地图的JS API实现市区地图渲染

效果图: 核心代码: <script setup>import { onMounted, onUnmounted } from vue;import AMapLoader from @amap/amap-jsapi-loader;import { message } from ant-design-vue;import school from @/assets/icons/school.svg;import enterprise from @/assets/icons/ent…

英特尔 “AI” 科通:英特尔AI大模型应用前瞻

亲爱的科技探险家、前沿探索者、对未来深具好奇心的您&#xff0c; 身处人工智能引领的时代&#xff0c;我们目睹着行业的革命性变革。技术的创新不仅改变着我们的日常&#xff0c;更重新定义着我们对未来的期许。今天&#xff0c;怀着无限激情和期待&#xff0c;我们邀请您参…

SHH远程管理

4.1SHH远程管理 SSH是一种安全通道协议&#xff0c;主要用来实现字符界面的远程登录&#xff0c;远程复制等功能。 4.1.1配置OpenSSH服务器 在 CentOS 7.3 系统中&#xff0c;OpenSSH 服务器由 openssh、openssh-server 等软件包提供(默认已安装)&#xff0c;并已将 sshd 添…

Java多线程设计模式之保护性暂挂模式

模式简介 多线程编程中&#xff0c;为了提高并发性&#xff0c;往往将一个任务分解为不同的部分。将其交由不同的线程来执行。这些线程间相互协作时&#xff0c;仍然可能会出现一个线程等待另一个线程完成一定的操作&#xff0c;其自身才能继续运行的情形。 保护性暂挂模式&a…

Android Room数据库使用介绍

1.简介 Room是Google提供的Android架构组件之一&#xff0c;旨在简化数据库操作。它是SQLite的一个抽象层&#xff0c;提供了更易用和安全的API。 Room的总体架构: 2.Room数据库的基础概念 Entity Entity是Room中的数据表&#xff0c;每个Entity类对应一个SQLite表。 DAO …

研发团队的「技术债」如何进行量化管理?

我共事过的每个团队都会讨论技术债。有些团队知道如何管理它&#xff0c;也有些团队因此崩溃瘫痪&#xff0c;甚至有一家公司因为技术债务没有得到解决而宣告失败。 什么是技术债务&#xff1f; 「债务」这个比喻非常恰当。最早提出「技术债务 Technical Debt」比喻的工程师 W…

Linux(Centos7)OpenSSH漏洞修复,升级最新openssh-9.7p1

OpenSSH更新 一、OpenSSH漏洞二、安装zlib三、安装OpenSSL四、安装OpenSSH 一、OpenSSH漏洞 服务器被扫描出了漏洞需要修复&#xff0c;准备升级为最新openssh服务 1. 使用ssh -v查看本机ssh服务版本号 ssh -V虚拟机为OpenSSH7.4p1&#xff0c;现在准备升级为OpenSSH9.7p1…

Centos7 安装oracle 11.2.0.4

荆轲刺秦王 1. 准备工作 需要下载 Oracle 11g 安装包 2.HostName修改&#xff1a; hostnamectl set-hostname oracle 3. 配置hostname&#xff08;本机IP映射&#xff09;注意&#xff1a;192.168.116.129 需要换乘本地ip vi /etc/hosts 192.168.116.129 oracle # 测试hos…

创新实训2024.06.17日志:大模型微调总结

前段时间其实我们已经部署了大模型&#xff0c;并开放了对外的web接口。不过由于之前某几轮微调实验的大模型在对话时会有异常表现&#xff08;例如响应难以被理解&#xff09;&#xff0c;因此我在项目上线后&#xff0c;监控了数据库里存储的对话记录。确定了最近一段时间部署…

基 CanMV 的 C 开发环境搭建

不论是使用 CanMV 提供的基于 C 语言和 FreeRTOS 的应用开发方式开发应用程序或是编译 CanMV 固件&#xff0c;都需要搭建基于 CanMV 的 C 开发环境&#xff0c;用于编译 CanMV 源码。 1. 开发环境搭建说明 CanMV 提供了基于 C 语言和 FreeRTOS 的应用开发…

【教程】hexo 更换主题后,部署在 Github Page 无 CSS 样式

目录 前言环境hexo 更换主题解决部署到 Github Page 后无 CSS 样式的问题 前言 最近更换了 hexo 的主题后&#xff0c;重新部署到 Github Page 上发现不显示 CSS 样式&#xff0c;但在本地启动时又是正常的效果。此外&#xff0c;检查资源请求&#xff0c;发现多个 .css 文件请…

【软件测试】软件测试入门

软件测试入门 一、什么是软件测试二、软件测试和软件开发的区别三、软件测试在不同类型公司的定位1. 无组织性2. 专职 OR 兼职3. 项目性VS.职能性4.综合型 四、一个优秀的软件测试人员具备的素质1. 技能相关2. 非技能相关 一、什么是软件测试 最常见的理解是&#xff1a;软件测…

【效率提升】倍速插件Global Speed

global speed插件可以控制网页在线视频&#xff0c;能够应用在Edge和Google浏览器中&#xff0c;只需要在插件商店中下载并配置即可。这款插件的配置选项有很多&#xff0c;支持视频倍速&#xff08;最低0.25倍速&#xff0c;最高16倍速&#xff09;&#xff0c;固定标签页&…

【Java开发规范】IDEA 设置 text file encoding 为 UTF-8,且文件的换行符使用 Unix 格式

1. IDEA 设置 text file encoding 为 UTF-8 file -> settings -> editor -> code style -> file encoding Transparent-native-to-asci conversion 要不要勾选&#xff1f;> 不推荐勾选&#xff08;它的作用是用来自动转换ASCII编码&#xff0c;防止文件乱码&am…

Modbus协议转Profibus协议模块接热传感器配置攻略

一、前言 在工业自动化控制领域&#xff0c;Modbus协议和Profibus协议是两种常见的通讯协议&#xff0c;它们在设备之间传输数据起着至关重要的作用。而Modbus协议转Profibus协议模块&#xff08;XD-MDPB100&#xff09;设备&#xff0c;则扮演着连接不同通讯协议的桥梁角色。…

来点干货,比较好用的3D在线展示网站

制作好的3D模型需要客户对3D模型进行确认&#xff0c;图片和视频给过去&#xff0c;后面往往都会扯皮。无意间翻到几个3D展示网站&#xff0c;试用了下都不是很完善&#xff0c;后面在网上大量查阅资料并经过实际使用&#xff0c;发现几个相对比较好用值得推荐的。 1、Sketchf…

Python 数据持久化:使用 SQLite3 进行简单而强大的数据存储

&#x1f340; 前言 博客地址&#xff1a; CSDN&#xff1a;https://blog.csdn.net/powerbiubiu &#x1f44b; 简介 SQLite3是一种轻量级嵌入式数据库引擎&#xff0c;它在Python中被广泛使用。SQLite3通常已经包含在Python标准库中&#xff0c;无需额外安装。你只需导入 s…