IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Vite 环境变量及本地环境 -> 正文阅读

[游戏开发]Vite 环境变量及本地环境

Vite 环境变量的配置主要是为了本地开发区分环境的配置:本地、测试、阿里、生产等的判断,使用到的配置有:

1、envDir 这个配置是用来加载你放置.env文件的路径。说明文档:配置 Vite {#configuring-vite} | Vite中文网

2、loadEnv ,加载方式:import { defineConfig, loadEnv } from 'vite',loadEnv接收三个参数,第一个是.env后面的名字,第二个是绝对路径,第三个参数是你环境变量名的前缀,在vite中默认是VITE_。

比如你是.env.abc 就可以loadEnv(‘abc’, process.cwd(), 'ENV');

这样环境变量名其实就是ENV_QWER这种,文件名叫.env.abc。这只是个介绍,一般起文件名都是:.env.development?

英文版的文档有,中文搜不到:Configuring Vite | Vite

3、defineConfig 这个可以传入一个方法,方法可以接收一个对象,对象中常用两个参数:command, mode ,详见文档:配置 Vite {#configuring-vite} | Vite中文网

command 常用的:server(run dev) 和build(run build),官网上只写了这两个参数。

mode 常用的:development 和 production?在 config 中指定此项将覆盖serve 和 build的默认模式。该值也可以通过命令行--mode选项覆盖。

4、其他的参照:Env Variables and Modes | Vite

使用方式

在根目录创建.env.development 文件夹,里面内容:

# 测试

ENV_TARGET=https:///stage.baidu.com

# 开发

# ENV_TARGET=https:///dev.baidu.com

# 生产

#ENV_TARGET=https://www.baidu.com

使用:

其中 defineConfig传入的方法内可以接收一个对象,这个对象可以获取command和mode这两个属性,所以一般.env的文件命名是.env.development 和.env.production 因为这样直接将mode传入就可以了。

获取环境变量。

const env = loadEnv(mode, process.cwd(), 'ENV');

这个源码不是很多,我贴出来大家看看:

const envFiles = [
            /** mode local file */ `.env.${mode}.local`,
        /** mode file */ `.env.${mode}`,
        /** local file */ `.env.local`,
        /** default file */ `.env`
    ];

这段代码写的就是你传入mode的文件名:

  for (const key in process.env) {
        if (prefixes.some((prefix) => key.startsWith(prefix)) &&
            env[key] === undefined) {
            env[key] = process.env[key];
        }
    }

这里会遍历,将所有的环境变量中以prefixes变量开头的,都加载到env这个对象中。

 for (const file of envFiles) {
        const path = lookupFile(envDir, [file], { pathOnly: true, rootDir: envDir });
        if (path) {
            const parsed = dotenv.parse(fs__default.readFileSync(path), {
                debug: ((_a = process.env.DEBUG) === null || _a === void 0 ? void 0 : _a.includes('vite:dotenv')) || undefined
            });
            // let environment variables use each other
            main({
                parsed,
                // prevent process.env mutation
                ignoreProcessEnv: true
            });
            // only keys that start with prefix are exposed to client
            for (const [key, value] of Object.entries(parsed)) {
                if (prefixes.some((prefix) => key.startsWith(prefix)) &&
                    env[key] === undefined) {
                    env[key] = value;
                }
                else if (key === 'NODE_ENV' &&
                    process.env.VITE_USER_NODE_ENV === undefined) {
                    // NODE_ENV override in .env file
                    process.env.VITE_USER_NODE_ENV = value;
                }
            }
        }
    }

遍历envFiles 文件列表,判断如果有对应路径的话,读取路径内容,并取出prefix 开头的环境变量,并返回。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:35:02  更:2022-04-15 00:38:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:51:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码