当前位置: 首页 > backend >正文

【Webpack \ Vite】多环境配置

  • 环境变量
  • 脚本命令

如何通过不同的环境变量或不同的配置文件进行项目区分,动态加载配置。通常,使用环境变量是最简单且灵活的方法,因为它不需要改变构建命令或创建多个配置文件

环境变量

在根目录下创建 .env.xxx 文件,为不同的环境设置不同的变量

.env       				// 在所有环境中被载入
.env.local 				// 在所有环境中被载入,但会被 git 忽略
.env.[mode] 			// 只在指定的模式中被载入
.env.[mode].local 		// 只在指定的模式中被载入,但会被 git 忽略

React中必须以 REACT_APP_ 前缀来定义环境变量,Vue中必须以 VUE_APP_ 开头,Vite项目中环境变量必须 VITE_ 开头( 其中 NODE_ENV 是内置的环境变量,不需要前缀 )修改环境变量后需要重启开发服务器才能生效,环境变量在构建时会被静态替换

.env  					// 全局默认配置文件,无论什么环境都会加载合并
.env.development        // 开发环境
.env.production 		// 生产环境// 等等......

在这里插入图片描述
当全局的配置文件和环境的配置文件有相同配置项时,环境的配置项会覆盖全局的配置项。可使用 # 添加注释,注释内容不会被解析 当环境变量里面有特殊字符时,框架是无法识别的;需要将字符加上引号包括一下,取决于字段的值是否包含特殊字符

本地命令参数 > 环境文件 > .env

在这里插入图片描述
在这里插入图片描述

创建文件并配置变量: 根据需要进行自定义创建

// .env.test
NODE_ENV = test
VUE_APP_API_BASE = https://www.baidu.com
VUE_APP_WS_ENDPOINT = ws://dev.example.com//......// .env.uat 
NODE_ENV = uat
VUE_APP_API_BASE = https://api.example.com//......// 等等......

代码中的使用: 可以通过 process.env.XXX 直接访问这些配置项

//接口基础路径
const baseURL = process.env.NODE_ENV === 'production' ? process.env.VUE_APP_API_BASE : '/api'//WebSocket连接
const socket = new WebSocket(process.env.VUE_APP_WS_ENDPOINT)//构建配置
module.exports = {publicPath: process.env.NODE_ENV === 'production' ? './' : '/',configureWebpack: config => {if (process.env.NODE_ENV === 'production') {return {// 生产环境的webpack配置};} else {return {// 开发环境的webpack配置};}}
}//状态管理
const state={env:process.env.VUE_APP_API_BASE_URL, 
};

Vite项目中:通过 import.meta.env 访问这些环境变量

console.log(import.meta.env.MODE);  // 在 Vue 组件或任何 JS 文件中

脚本命令

在 package.json 文件中,scripts 部分用于定义 npm 脚本,这些脚本可以在命令行中通过 npm run <script-name> 命令执行

--mode :指定环境(如果有的话就按指定的来;没有就按默认的来)

"scripts": {"serve": "vue-cli-service serve",  //启动项目,并且加载.env和.env.development文件"serve:test": "vue-cli-service serve --mode test",  //启动项目,并且加载.env和.env.test文件"build": "vue-cli-service build",  //生产环境打包,其中.env和.env.production文件会加载"test": "vue-cli-service build --mode test", //测试环境打包,其中.env和.env.test文件会加载"all": "vue-cli-service build && vue-cli-service build --mode test", //生产环境和测试环境同时打包,加载不同的.env文件
},

cross-env 工具:跨平台环境变量设置,cross-env 允许你在不同操作系统(如 Windows 和 Unix/Linux)上统一设置环境变量。因为在 Windows 和 Unix 系统中设置环境变量的方式不同,使用 cross-env 可以避免这些差异

npm install --save-dev cross-env
"scripts": {"dev": "cross-env NODE_ENV=development vue-cli-service serve","build": "cross-env NODE_ENV=production vue-cli-service build"
}//使用 cross-env 来设置 NODE_ENV 环境变量
http://www.xdnf.cn/news/2516.html

相关文章:

  • makefile总结
  • 关于Spark知识点与代码测试的学习总结
  • 单片机 + 图像处理芯片 + TFT彩屏 复选框控件
  • 30-算法打卡-字符串-重复的子字符串-leetcode(459)-第三十天
  • 使用 Cherry Studio 调用高德 MCP 服务
  • NFS从零部署
  • 华为 CCE 查看节点剩余可调度cpu核数
  • 从零实现分布式WebSocket组件:设计模式深度实践指南
  • 路由协议基础
  • babel和loader的关系
  • 微深节能 平板小车运动监测与控制系统 格雷母线
  • LeetCode题解1297. 子串的最大出现次数
  • 低压电工常见知识点
  • 麒麟系统通过 Service 启动 JAR 包的完整指南
  • 【KWDB 创作者计划】_KWDB引领数据库技术革新的璀璨之星
  • 业务校验工具包-validate-utils介绍
  • spring-rabbit的CachingConnectionFactory默认参数导致消费者Channel数量暴增问题解决
  • go语言八股文(三)
  • Deep Dark Sea 局域網文件共享即時匿名聊天去數據庫部署
  • Ldap高效数据同步- MirrorMode双主复制模式配置详解(下)
  • spring项目rabbitmq es项目启动命令
  • 【Pandas】pandas DataFrame rfloordiv
  • 查回来的数据除了 id,其他字段都是 null
  • 【音视频】SDL事件
  • AI 发展历史与关键里程碑_附AI 模型清单及典型应用场景以及物流自动化适合的模型选择
  • 从零开始开发一个简易的五子棋游戏:使用 HTML、CSS 和 JavaScript 实现双人对战
  • windows安装docker,发现没有hyper
  • JVM常见的垃圾回收器
  • RT Thread Studio创建USB虚拟串口工程
  • 生物医学AI的特种算力需求:冷冻电镜数据处理中的GPU加速方案