首页 > 其他分享 >环境变量与模式

环境变量与模式

时间:2023-07-02 17:22:39浏览次数:38  
标签:模式 vite env build 环境变量 VITE mode

前言

vite.config.js是运行在node环境下的,vite会将esmodule转化为commonjs。

服务端区分环境

dotenv

vite内置了dotenv这个第三方库,他会自动读取.ev文件,并将其注入到process对象下。
但是 Vite 默认是不加载 .env 文件的,因为这些文件需要在执行完 Vite 配置后才能确定加载哪一个,举个例子,root 和 envDir 选项会影响加载行为。不过当你的确需要时,你可以使用 Vite 导出的 loadEnv 函数来加载指定的 .env 文件。

.env.development

KEY = 111
VITE_BASEURL = 'http://wangwu.com'

.env.produvtion

KEY = 222
VITE_BASEURL = 'http://lisi.com'

vite.config.js

import { defineConfig, loadEnv } from 'vite'
//process.cwd() 返回当前node进程的工作目录
//mode根据你敲的命令,development(dev)或者production(build)
export default defineConfig(({ command, mode }) => {
  // 根据当前工作目录中的 `mode` 加载 .env 文件
  // 设置第三个参数为 '' 来加载所有环境变量,而不管是否有 `VITE_` 前缀。(可以自己设置环境变量文件名)
  const env = loadEnv(mode, process.cwd(), '')
  return {
    // vite 配置
    define: {
      __APP_ENV__: env.APP_ENV,
    },
  }
})

客户端环境变量

大体上和服务端差不多,但是变量默认必须以 VITE_ 开头,当然你也可以在配置中修改默认开头。
通过 import.meta.env即可取得环境变量。

模式

默认情况下,开发服务器 (dev 命令) 运行在 development (开发) 模式,而 build 命令则运行在 production (生产) 模式。

这意味着当执行 vite build 时,它会自动加载 .env.production 中可能存在的环境变量:

# .env.production
VITE_APP_TITLE=My App

在你的应用中,你可以使用 import.meta.env.VITE_APP_TITLE 渲染标题。

在某些情况下,若想在 vite build 时运行不同的模式来渲染不同的标题,你可以通过传递 --mode 选项标志来覆盖命令使用的默认模式。例如,如果你想在 staging (预发布)模式下构建应用:

vite build --mode staging

还需要新建一个 .env.staging 文件:

# .env.staging
VITE_APP_TITLE=My App (staging)

由于 vite build 默认运行生产模式构建,你也可以通过使用不同的模式和对应的 .env 文件配置来改变它,用以运行开发模式的构建:

# .env.testing
NODE_ENV=development

标签:模式,vite,env,build,环境变量,VITE,mode
From: https://www.cnblogs.com/zychuan/p/17521045.html

相关文章

  • 设计模式 - 观察者模式以及存在的问题
    观察者模式其实可以称之为发布订阅模型的,因为里面有一个Observable 和一个Observer ,我这个Observable为可以观察到的意思,意思就是对外可见的,所以可以称之为发布者(publisher),其他的Observer可以称之为订阅者(subscriber),是对外不可见的.1.JDK的观察者模式 jav......
  • 设计模式之观察者模式
    定义定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式的UML类图及说明如上图(图片来源于《head_first设计模式》)所示,观察者的uml中主要有以下类1.主题Subject(接口)Subject对象带有绑定观察者到Client对象和从Cl......
  • 设计模式之观察者模式
    定义定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式的UML类图及说明  如上图(图片来源于《head_first设计模式》)所示,观察者的uml中主要有以下类1.主题Subject(接口)Subject对象带有绑定观察者到Clien......
  • SpringBoot 插件化开发模式
    1、Java常用插件实现方案1.2、serviceloader方式serviceloader是java提供的spi模式的实现。按照接口开发实现类,而后配置,java通过ServiceLoader来实现统一接口不同实现的依次调用。而java中最经典的serviceloader的使用就是Java的spi机制。1.2.1、javaspiSPI全称ServiceProv......
  • [PLC]Proface普洛菲斯进入离线模式的方法
       进入离线的方法参考手册第M.1.2章节进入离线模式    Proface ChinaTechnical Support DepartmentSky 进入离线的方法参考手册第M.1.2章节进入离线模式 进入离线的方法•  方法1  上电时直接进入离线在显示开始画面后, 触摸屏幕右......
  • Cocos Creator开发之MVC模式初探
    设计模式是用来实现软件设计进行分工的。设计模式应该是小巧的,对具体问题提出解决方案,以提高代码复用率,提高代码耦合性。CocosCreator中引入MVC模式的主要目的是:为了帮助CocosCreator开发者脱离拖拽脚本导致的后期维护方面带来的困难。一、基本的MVC模式组成控制器(Controller)-负......
  • 模式的真正价值是什么?
    在于交付的时候解决方案是否能正常工作并满足需求。模式就是其他人已经遇到过并加以分类的问题的解决方案。重构模式的时候需要判断是否能够更好地适应未来的变化,并对当前的解决方案有所改进。软件架构师大多是关于决定的。反模式是一种介绍如何从问题演化到不好的解决方案的模......
  • PostgreSQL 数据库与模式(二)
    删除数据库如果确定一个库不需要了,可以使用DROPDATABASE语句删除一个数据库(工作中谨慎删库):DROPDATABASE[IFEXISTS]name;如果使用了IFEXISTS,删除一个不存在的数据库时不会产生错误信息。删除数据库会同时删除该数据库中所有的对象,以及文件系统中的数据目录。只有数据库......
  • Settle Finance:以区块链技术为核心的P2P借贷模式
    "在数字化世界中,我们看到了许多技术进步如何推动金融行业的革新。其中,Peer-to-Peer(P2P)借贷模式的出现为借贷市场带来了新的可能性。然而,这个模式也带来了诸多问题,尤其是在信任和安全性方面。随着区块链技术的兴起,我们看到了它在改善P2P模式中的这些问题上的巨大潜力。区块链的......
  • ACM模式机考准备指南
    1熟练掌握格式化输入输出方法ACM模式需要题目要求,按照规定的格式自己手动写输入和输出的代码,如果没有充分准备,考试的时候就有可能会在输入输出这块卡很久,浪费考试的时间,反之,如果能够掌握各种格式的输入输出方法,则可以让我们在考试的时候快速完成输入输出代码的编写,节省出更多的......