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

【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 环境变量

相关文章:

  • Redis一些小记录
  • lstm用电量预测+网页可视化大屏
  • 矩阵系统源码搭建热门音乐功能板块开发,支持OEM
  • 【音视频】音频编码实战
  • 用 Nodemon 解决 npm run serve 频繁重启服务
  • 华为仓颉编程语言的实际用法与使用领域详解
  • 【Arxiv 2025】Single Image Iterative Subject-driven Generation and Editing
  • jss html5-node.nodeType 属性用于表示节点的类型
  • PySpark中DataFrame应用升阶及UDF使用
  • 手写SpringMVC(基本框架)
  • 集成方案 | Docusign + 甄零科技,赋能企业海外业务高效增长!
  • OpenCV实验室工具的使用
  • 高能效计算:破解算力增长与能源约束的科技密码
  • 基于 Amazon RDS 数据库之间复制数据并屏蔽个人身份信息
  • 缺省处理、容错处理
  • java 类的实例化过程,其中的相关顺序 包括有继承的子类等复杂情况,静态成员变量的初始化顺序,这其中jvm在干什么
  • 关于定时任务原理
  • Mysql如何高效的查询数据是否存在
  • Jenkins(CI/CD工具)
  • OceanBase单机重启和配置修改
  • 五一期间上海景观照明开启重大活动模式,外滩不展演光影秀
  • 李公明|一周画记:哈佛打响第一枪
  • 国家发展改革委:我们对实现今年经济社会发展目标任务充满信心
  • 葛兰西的三位一体:重提并复兴欧洲共产主义的平民圣人
  • 梅花画与咏梅诗
  • 新任浙江省委常委、组织部长杨荫凯到嘉兴南湖瞻仰红船