Vue3 环境变量

2023-09-20 15:51:41


前言

本文主要记录在项目中如何定义环境变量,达到不同环境中有不同的效果以及在vite配置文件中读取环境变量的方法。


一、环境变量简介

场景:各个环境下存在某些差异,比如请求地址不同,方便测试做的一些测试功能,
这些在不同环境下都是不同的,所以需要一些环境变量来控制
自带的环境变量存在于 import.meta.env 中

 BASE_URL: "/"  ===>路由应用前缀
DEV: true  ===>npm run dev 设置为true 当前运行环境开发环境
MODE: "development" ===》当前运行环境
PROD: false ===>npm run build 生产环境
SSR: false ===》服务端渲染

内置环境变量

这些环境变量可修改,但是不要做动态修改 import.meta.env[BASE_URL] = ‘BASE_URL’,
生产环境是硬编码,写死的


二、自定义环境变量

自定义环境变量

  • 在根目录下创建.env.xxxx文件
    如开发环境变量文件:.env.development
    生产环境变量文件:.env.production

  • 以VITE_开头自定义环境变量
    在 package.json 中 在dev补充 “dev”:–mode development ===> “vite --mode development”,
    生产环境会默认读取.env.production文件内容,不用配置

开发环境也会默认读取.env.development文件内容,不用配置

开发环境

生产环境预览

生产环境在打包好后无法在本地直接运行index.html,需要为他开启一个服务

  • 安装 http-server :npm install http-server -g
  • 开启服务:在打包文件下(dist)执行命令 http-server -p 9002 就可以在本地查看效果

打包预览


三、vite配置文件读取环境变量

在vite.config中读取环境变量,因为是Node环境编译无法通过import.meta.env读取环境变量需要进行改造,使用 process.env 可读取到机器的环境变量,但是读取不到我们定义的环境变量, 需要使用 Vite 的 loadEnv 包 ,loadEnv接收两个参数

  • 第一个为运行环境
    运行环境通过回调获取,所以这里需要对导出做改造 将其变成箭头函数,再将配置 return返回
    回调返回mode就是当前环境,将其作为第一个参数传入 loadEnv
  • 第二个为目录
    再通过process.cwd()获取当前项目根目录,将其作为第二个参数传入 loadEnv
    最终就可以读到环境变量了
export default ({mode}:any)=>{
  console.log(loadEnv(mode,process.cwd())) // 读取环境变量
  return defineConfig({
    plugins: [vue()],
    // 别名配置
    resolve: {
      alias: {
        "@": path.resolve(__dirname, "src"),
        "coms": path.resolve(__dirname, "src/components"),
      },
    },
    css:{
      // 预处理器
      preprocessorOptions: {
        scss:{
          additionalData: `@import"./src/views/BEM架构与layout布局/index.scss";`
        }
      },
      postcss:{
        plugins:[PostcssPxToViewport()]
      }
    }
  })
}

vite配置文件读取环境变量


总结

以上就是自定义环境变量,和在vite配置文件中读取环境变量的全部介绍。

更多推荐

【mybatis和mybatis-plus】源码分析

mybatis核心类和接口说明Environment环境配置,包含id、TransactionFactory(事务工厂)、DataSourceTransactionFactory有三个实现类,我们与spring整合,默认使用第三个事务工厂TypeAliasRegistry别名映射比如全限定名:parameterType

CentOS安装 Docker 和 docker-compose(V1和V2两个版本)

目录一、安装Docker1、更新docker的yum源为阿里云仓库2、安装必要的一些系统工具3、查看docker-ce版本4、安装指定版本的docker5、切换Dockek镜像下载源(这里使用阿里云镜像)6、启动测试docker7、Docker启动关闭操作8、卸载/更新已经安装的Docker二、安装docker-com

2024字节跳动校招面试真题汇总及其解答(四)

12.Java的类加载机制Java的类加载机制是指将描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。类的加载过程分为以下五个阶段:加载:将Class文件从磁盘读入内存,并将其放在方法区中。验证:对Class文件进行

ExcelServer EXCEL服务器使用- 用户、角色权限配置

Excel文件服务器搭建搭建Excel服务器1、登录默认用户名Admin密码32、角色管理添加修改角色角色配置在系统管理->角色.fexm文件夹下可以像修改excel文件一样修改角色3、用户管理添加修改用户用户的修改在系统管理->用户.fexm可以像excel一样编辑用户,注意不要删除列角色编号内容需要与上述角色内容一

Map面试常见问题

Map的特点有哪些?Java中的Map是一种接口,它表示一种将键映射到值的对象。Map的特点主要有以下几点:键的唯一性:每个键在Map中只能出现一次,不能重复。不保证键的顺序:Map不保证键的插入顺序或者遍历顺序。例如,HashMap在迭代时键的顺序与插入顺序可能不一致。可以为null的键和值:Map允许使用null作

语义分割——灰度图像转伪彩色图像

目录检验灰度图检验代码灰度图转伪彩色图代码转换代码使用细则示例转换结果总结检验灰度图制作语义分割数据集或用训练好模型测试图像时,得到的结果是灰度图像,如下:检验代码上面图像灰度值不是全是全为0,灰度范围在[0,1]之间,使用下面脚本测试灰度图像的灰度值是否全为0:importcv2img=cv2.imread("out

【面试题精讲】说一说springboot加载配置文件优先级

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top首发博客地址文章更新计划系列文章地址SpringBoot加载配置文件的优先级是根据不同的位置和命名规则来确定的。下面按照优先级从高到低的顺序来介绍:命令行参数:通过命令行参数指定的配置会覆盖其他配置

python与mongodb交互-->pymongo

frompymongoimportMongoClient#创建数据库连接对象client=MongoClient('ip',27017)#选择一个数据库db=client['admin']db.authenticate('python','python')#选择一个集合col=client['pydata']['tes

BroadcastChannel方法跨浏览器窗口通信

1.描述同源的不同浏览器窗口,Tab页,frame或者iframe下的不同文档之间可以通过BroadcastChannel相互通信。2.构造函数通过BroadcastChannel类传入的参数创建实例,传入的参数将指定通道名称,在同源环境下该通道可以相互通信,一个名称只对应一个通道。//将创建的实例挂载到window上

Elasticsearch 快速开始

Elasticsearch是一个分布式的RESTful风格的搜索和数据分析引擎。查询:Elasticsearch允许执行和合并多种类型的搜索—结构化、非结构化、地理位置、度量指标—搜索方式随心而变。分析:找到与查询最匹配的十个文档是一回事。但是如果面对的是十亿行日志,又该如何解读呢?Elasticsearch聚合让您能

AIGC生态,引领社会、行业、个体的翻天覆地变革

1879年,当爱迪生成功地实验出能够持续发光的灯丝时,他迎来了一个新的挑战:如何让更多人能够享受到电力的便利?经过艰难探索,直到1882年9月,在曼哈顿的珍珠街上,爱迪生才铺设了世界上第一张电力网络,为普罗大众提供了电力。正由此,第二次工业革命的幕布才得以徐徐打开。每当一项重大技术突破出现时,人类都不得不思考如何将其普

热文推荐