[Tools] Vite环境变量

news/2025/2/5 3:11:42/文章来源:https://www.cnblogs.com/Answer1215/p/18698692

https://cn.vitejs.dev/guide/env-and-mode#env-variables-and-modes

 

添加额外的环境变量

.env

#标题
VITE_APP_TITLE='Vite App'
#端口
VITE_PORT=5173
#是否自动打开浏览器
VITE_OPEN=true

.env.development

#开发环境端口
VITE_PORT=8848
#是否删除console打印日志
VITE_DROP_CONSOLE=false

.env.production

#是否删除console打印日志
VITE_DROP_CONSOLE=true

 

在Node环境中读取ENV

Vite提供loadEnv,可以读取指定的或者所有的环境变量;

默认时VITE_前缀,你也可以修改, 通过envPrefix: https://cn.vitejs.dev/config/shared-options.html#envprefix

vite.config.ts

import { defineConfig, ConfigEnv, UserConfig, loadEnv } from 'vite'
import { wrapperEnv } from './build/getEnv.ts'export default defineConfig(({command, mode}: ConfigEnv):UserConfig => { const root = process.cwd();// 默认读取node环境变量// console.log(process.env)// mode 表示当前情景 root表示项目根路径,'' 表示前缀,''默认读取所有的环境变量const env = loadEnv(mode, root, 'VITE_')console.log(env);const viteEnv = wrapperEnv(env);return {root,server: {port:viteEnv.VITE_PORT,open:viteEnv.VITE_OPEN},esbuild: {pure:viteEnv.VITE_DROP_CONSOLE ? ['console.log','debugger'] : []}}
})

build/getEnv.ts

type Recordable<T = any> = Record<string, T>;export function wrapperEnv(envConfig: Recordable):ViteEnv { const ret: any = {};for (const envName of Object.keys(envConfig)) { let realName = envConfig[envName].replace(/\\n/g, '\n');realName = realName === 'true' ? true : realName === 'false' ? false : realName;if (envName === 'VITE_PORT') { realName = Number(realName);}ret[envName] = realName;}return ret;
}

 

src/vite-env.d.ts

https://cn.vitejs.dev/guide/env-and-mode.html#intellisense

declare interface ViteEnv { VITE_APP_TITLE: stringVITE_PORT: numberVITE_OPEN: booleanVITE_DROP_CONSOLE: boolean
}//定义映射类型,将属性设置为只读
type ReadonlyProps<T> = {readonly [P in keyof T]: T[P]
}interface ImportMetaEnv extends ReadonlyProps<ViteEnv>{
}interface ImportMeta {readonly env: ImportMetaEnv
}

 

在浏览器环境中使用ENV

console.log(import.meta.env.VITE_APP_TITLE)

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

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

相关文章

家里的厕所马桶堵塞了,如何不花一分钱就轻松地处理好 All In One

家里的厕所马桶堵塞了,如何不花一分钱就轻松地处理好 All In One 马桶堵塞, 管道疏通家里的厕所马桶堵塞了,如何不花一分钱就轻松地处理好 All In One马桶堵塞, 管道疏通原理分析 大气压强,利用工具,提高管道内外的压力差 解决方案马桶刷 塑料袋demos(🐞 反爬虫测试!打击…

Tianji监控

部署地址 当前地址:Tianji 项目地址: GitHub 安装教程 监控端 Sealos一键安装 安装成功后,在监控端申请添加服务器:复制第2步中的命令备用,然后在第一步的下载报告器发布页面中下载适宜类型的报告器,x86的Linux服务器就下载下面这个:下载完成后上传到Linux服务器的根目录…

赛道

方案23:AI股票/加密货币分析助手 适合人群:关注金融市场,有数据分析经验。 盈利方式:订阅制分析、投资顾问工具、课程售卖。 步骤:开发AI金融分析系统AI 实时分析股票、比特币市场走势。 提供个性化投资建议(非金融牌照业务)。变现方式:付费会员(月费199元,提供每日市…

λ-calculus的归约

\(\newcommand{\l}{\lambda}\)在之前的讨论中,我们用等号\(=\)表示“可以演算得到”,并且规定等号具有自反、对称、传递的基本性质。这就意味着,我们不仅可以说\((\l x.xx)N\)能演算得到\(NN\),根据对称性也可以说\(NN\)能演算得到\((\l x.xx)N\)。后者听上去很奇怪,因为与…

CubeMX 生成代码 在VScode 中显示未定义,解决办法

CubeMX 生成代码 在VScode 中显示未定义,解决办法CubeMX 生成代码 在VScode 中显示未定义,解决办法 1. 背景 CubeMX 生成代码 在VScode 中显示未定义,未定义、头文件路径无效,在当实际上是可以编译成功的。 2. 原因 keil软件编译器会预编译一些头文件,vscode没有编译 3. 解…

从《だから僕は音楽を辞めた》到《エルマ》

《エルマ》专辑访谈从《だから僕は音楽を辞めた》到《エルマ》 从专辑制作实况到更深层的乐器与演奏方式的执着,除了n-buna、suis之外,支援ヨルシカ的下鹤光康(吉他)、キタニタツヤ(贝斯)、Masack(鼓)、平畑彻也(钢琴)六人畅谈一切。超过一万五千字的特别专访。首先想…

vscode+edie插件配置STM32开发环境,彻底摆脱KEIL

安装 首先去vscode官网下载适合自己的安装包,一般来说选择 User Installer x64 即可,具体安装过程请参考其他教程,此处不再赘述: Vscode官网安装完成后打开,在左侧边栏打开插件市场,搜索并安装如下四个插件:C/C++ (C语言代码提示的核心插件) Chinese (中文显示) Emb…

本地部署DeepSeek并用Python调用

本地部署DeepSeek并用Python试调用之,总体来说过程比较顺畅。目录需要下载的软件安装步骤安装Ollama并运行模型DeepSeek安装Hollama试用python调用 需要下载的软件OllamaSetup.exe(Ollama是一个管理和运行大语言模型的开源工具) Hollama_0.25.1-win-x64.exe【可选】(Hollam…

12 网络编程详解

知识预备网络通信 :​ 网络通信是指,将一台设备(Host1)中的数据通过网络传输到另一台设备(Host2)。java.net 包下提供了许多用于完成网络通信的类或接口。 ​ 相关流程图如下 :网络 :​ 两台或两台以上的设备通过一定物理设备(交换机,网关服务器等等)连接起来…

25.2.4小记(FoxandRabbit代码复现)

1.接口(interface)不仅可以用于定义方法的签名,还可以充当类型的一部分。其本身可以作为类来引用 eg.Cell[][] field 数组中的对象是实现了这个接口的类的实例。 是一种特殊的classreturn list.toArray(new Cell[list.size()]);中list.toArray是将原来的数组填充到()中的对…

2015 纯碱

回调后有一波多头行情