Vite多环境配置与打包:
环境变量必须以VITE开头
1.VITE_BASE_API:
- 在开发环境中设置为 /dev-api,这是一个本地 mock 地址,通常用于模拟后端接口。
2.VITE_ENABLE_ERUDA:
- 设置为 "true",表示启用调试工具,通常是为了方便开发和调试。
3.VITE_PUBLIC_PATH:
- 在开发环境中设置的打包路径为 http://192.168.10.7:8001,这可能是一个本地开发服务器的地址。
开发环境:
# baseUrl
# /dev-api 为本地 mock 地址,不使用 mock 的话此处换为你的开发环境接口地址,例如 http://192.168.233.233
VITE_BASE_API = '/dev-api'# 开发环境启用 cdn eruda 调试工具。若不启用,将 true 修改为 false 或其他任意值即可
VITE_ENABLE_ERUDA = "true"# 线上环境平台打包路径
VITE_PUBLIC_PATH = http://192.168.10.1
线上生产环境:
线上生产环境的链接和打包路径通常是不同的。
- VITE_BASE_API:这是指向后端 API 的基础 URL,通常用于应用程序与后端服务器通信。在你的例子中,它指向 http://192.168.10.7:8881/,这通常是一个内部或开发环境的地址。
- VITE_PUBLIC_PATH:这是静态资源的公共路径,用于线上环境中访问静态文件。在你的例子中,它指向 http://8.154.36.180:8903,可能是一个用于托管静态资源的 CDN 或服务器。
Vite多环境配置与打包:
1. 安装依赖
npm install --save-dev cross-env
npm install --save-dev cross-env 命令用于安装 cross-env 这个工具,并将其作为开发依赖添加到你的项目中。下面是更详细的说明:
cross-env 的用途
- 跨平台环境变量设置:
cross-env 允许你在不同操作系统(如 Windows 和 Unix/Linux)上统一设置环境变量。因为在 Windows 和 Unix 系统中设置环境变量的方式不同,使用
cross-env 可以避免这些差异。
- 常用场景:通常在 package.json 的 scripts 部分使用,用于设置环境变量后执行特定的命令。
示例:
在 package.json 中的 scripts 部分,你可能会看到类似的命令:
"scripts": {"start": "cross-env NODE_ENV=development node server.js","build": "cross-env NODE_ENV=production webpack"
}
这意味着无论在 Windows 还是 Unix 系统上,你都可以使用 npm run start 或 npm run build 来启动开发或生产环境,而不必担心操作系统的差异。
如何检查项目中是否配置了 cross-env(忽略):
1.查看 package.json:
- 打开项目根目录下的 package.json 文件,检查 devDependencies 是否包含 cross-env:
2..使用命令行:
- 运行以下命令查看所有安装的包,包括开发依赖:
npm ls --dev
- 在输出中查找 cross-env,如果找到了,说明项目已经配置了这个工具。
2. 配置环境变量
在项目根目录下创建 .env 文件,分别为不同环境创建不同的环境变量配置。例如:
- .env.development:开发环境
- .env.production:生产环境

在这些文件中,你可以设置不同的环境变量,例如 API 端点或其他服务的配置。
# .env
VITE_API_URL=https://api.example.com# .env.development
VITE_API_URL=http://localhost:3000# .env.production
VITE_API_URL=https://api.prod.example.com
3. 应用环境变量
在项目中,你可以通过 import.meta.env 访问这些环境变量。
在login登录页的时候,启动的时候可以打印到控制台查看运行的环境
// 在 Vue 组件或任何 JS 文件中console.log(import.meta.env.MODE);
这个文件是自动生成的,后面会详细解释

4. 运行和构建项目
使用不同的环境变量运行和构建项目。在命令行中,你可以通过 --mode 选项指定环境。
# 开发环境
vite --mode development# 生产环境
vite build --mode production
或者,你可以在 package.json 的脚本中定义不同的命令,以便更方便地运行和构建。
// package.json
{"scripts": {"dev": "vite --mode development","build:dev": "vite build --mode development","build:prod": "vite build --mode production"}
}
然后,你可以使用 npm 或 yarn 运行这些脚本(后续给老师,老师来对命令进行区分):
npm run dev
npm run build:dev
npm run build:prod
在 vite.config.ts中
使用了defineConfig 函数来定义构建选项。
export default defineConfig(({ mode }) => ({build: {rollupOptions: {output: {chunkFileNames: "static/js/[name]-[hash].js",entryFileNames: "static/js/[name]-[hash].js",assetFileNames: "static/[ext]/[name]-[hash].[ext]"}}}
}));
- 默认环境:如果你没有在命令行中通过 --mode 参数显式指定模式,当你运行 vite build 时,默认情况下,Vite 将会使用 production(生产) 模式。
- 在 production 模式下,Vite 会进行优化,以确保生成的构建文件适合生产环境。
可以通过在命令行中指定 --mode 参数来切换到其他环境,例如开发环境。
文件名:

ImportMetaEnv 和 ImportMeta 这些接口通常是在使用 Vite 和 TypeScript 时自动生成的。它们是 Vite 提供的类型定义,旨在帮助开发者在项目中更好地使用环境变量和模块功能。
具体情况:
- 自动生成:当你创建 Vite 项目时,Vite 会自动生成相关的类型定义文件,以便 TypeScript 能够正确识别 import.meta 对象的属性。
- 类型安全:这些接口提供了类型安全的方式来访问环境变量和其他模块元数据,减少了运行时错误的可能性。
- 更新:如果你更改了 Vite 配置中的环境变量,重新启动开发服务器后,这些类型定义会自动更新,以反映最新的配置。
接口详解:
1.ImportMetaEnv:
- 描述了环境变量的类型。它可以包含任意数量的键值对,但至少有以下几个属性:
- SSR: 布尔值,指示是否启用服务端渲染。
- PROD: 布尔值,指示是否在生产模式。
- DEV: 布尔值,指示是否在开发模式。
- MODE: 当前运行模式(如 development 或 production)。
- BASE_URL: 应用的基础 URL。
2.ImportMeta:
- 描述了模块的元数据,包括:
- glob: 动态导入多个模块的函数。
- env: 当前环境变量的信息,类型为 ImportMetaEnv。
- hot: 可选属性,用于热模块替换(HMR)。
- url: 当前模块的完整路径。
模版:
interface ImportMetaEnv {[key: string]: anyBASE_URL: stringMODE: stringDEV: booleanPROD: booleanSSR: boolean
}interface ImportMeta {// 当前模块的 URL,指向模块文件的完整路径url: string;// 可选属性,用于支持热模块替换 (HMR)// 如果启用 HMR,该属性提供一个上下文对象readonly hot?: import('./hot').ViteHotContext;// 当前环境变量的信息// 包含构建时或运行时的环境配置,如 API URL、版本号等readonly env: ImportMetaEnv;// 动态导入多个模块的函数// 与 glob 模式结合使用,允许批量加载模块glob: import('./importGlob').ImportGlobFunction;
}
使用示例
在 Vite 项目中,可以直接使用这些接口来访问环境变量和模块信息。
// 假设在你的 TypeScript 文件中// 访问环境变量const apiUrl = import.meta.env.VITE_BASE_API; // 访问基础 API URLconst isDev = import.meta.env.DEV; // 判断是否在开发模式// 打印环境信息console.log(`API URL: ${apiUrl}`);console.log(`Is Development: ${isDev}`);// 使用 HMR(如果启用)if (import.meta.hot) {import.meta.hot.accept((newModule) => {// 处理热更新console.log('Module updated:', newModule);});
}// 使用动态导入const loadComponent = async () => {const module = await import.meta.glob('./components/*.vue'); // 动态加载所有 Vue 组件console.log(module);
};
loadComponent();
前面提到,默认是生产环境指的是打包的默认模式:
默认模式说明
1.开发模式:
- 当你运行 vite 命令或 npm run dev 时,Vite 默认使用开发模式。这是因为开发命令通常用于启动开发服务器,帮助开发者实时预览和调试应用。
2.生产模式:
- 当你运行 vite build 时,Vite 默认会使用生产模式来构建应用。这里的 "默认" 指的是在没有显式指定 --mode 参数的情况下,Vite 会将 NODE_ENV 设置为 production。
总结
- 开发命令(如 npm run dev)默认使用开发模式。
- 构建命令(如 vite build)默认使用生产模式。
这两者并不冲突。在开发过程中,你通常使用开发模式,而在构建生产版本时,Vite 则使用生产模式。
所运行的时候默认是开发环境
如果你的 Vite 项目默认使用开发环境,通常是因为以下几个原因:
1.未指定环境模式
- 默认情况下,当你运行 vite 或 vite build 命令时,如果没有显式指定 --mode 参数,Vite 会将 NODE_ENV 设置为 development。
- 例如,运行以下命令时:
npm run dev
这将启动开发服务器,默认使用开发模式。
package.json 脚本配置
- 在 package.json 中,可能会有类似以下的脚本:
"scripts": {"dev": "vite", // 启动开发服务器"build": "vite build" // 构建生产版本
}
- 运行 npm run dev 会启动开发服务器,并使用开发环境。
2.vite.config.js 配置
- 如果在 vite.config.js 中没有特别配置以指定环境,Vite 将默认为开发模式。
- 你可以查看 vite.config.js,确认是否有设置 mode 的代码。
3.环境变量文件
- Vite 支持使用环境变量文件(如 .env, .env.development, .env.production)来设置不同的环境变量。
- 如果没有 .env.production 文件,或者在构建时没有指定 --mode production,则默认使用开发环境的配置。
4.命令行参数
- 如果你希望在构建时使用生产环境,可以使用:
npm run build -- --mode production
总结
你的项目默认是开发环境,通常是因为没有显式指定其他环境模式。你可以通过查看 package.json、vite.config.js 和环境变量文件来确认和修改环境配置。
相关文章:
Vite多环境配置与打包:
环境变量必须以VITE开头 1.VITE_BASE_API: 在开发环境中设置为 /dev-api,这是一个本地 mock 地址,通常用于模拟后端接口。 2.VITE_ENABLE_ERUDA: 设置为 "true",表示启用调试工具,通常是为了…...
git维护【.gitignore文件】
在工程下添加 .gitignore 文件【git忽略文件】 *.class .idea *.iml *.jar /*/target/...
【Canvas与色彩】十六等分多彩隔断圆环
【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>隔断圆环Draft5十六等分多彩</title><style type"text…...
什么是pip? -- Python 包管理工具
前言 不同的编程语言通常都有自己的包管理工具,这些工具旨在简化项目的依赖管理、构建过程和开发效率,同时促进代码的复用和共享。每个包管理工具都有其独特的特点和优势,开发者可以根据自己的编程语言和项目需求选择合适的包管理工具。 pip是…...
FastAPI框架使用枚举来型来限定参数、FastApi框架隐藏没多大意义的Schemes模型部分内容以及常见的WSGI服务器Gunicorn、uWSGI了解
一、FastAPI框架使用枚举来型来限定参数 FastAPI框架验证时,有时需要通过枚举的方式来限定参数只能为某几个值中的一个,这时就可以使用FastAPI框架的枚举类型Enum了。publish:December 23, 2020 -Wednesday 代码如下: #引入Enum模块 from fa…...
OceanBase—02(入门篇——对于单副本单节点,由1个observer扩容为3个observer集群)——之前的记录,当初有的问题未解决,目前新版未尝试
OceanBase—02(入门篇——对于单副本单节点,由1个observer扩容为3个observer集群)——之前的记录,有的问题未解决,新版未尝试 1、前言—安装单副本单节点集群1.1 docker安装OB 2、查看现有集群情况2.1 进入容器&#x…...
前沿论文创新点集合
系列文章目录 文章目录 系列文章目录一、《LAMM: Label Alignment for Multi-Modal Prompt Learning》二、《MaPLe: Multi-modal Prompt Learning》三、《Learning to Prompt for Vision-Language Models》CoOp四、《MobileCLIP: Fast Image-Text Models through Multi-Modal R…...
刷题记录(好题)
Problem - D - Codeforces 思路: 滑动窗口思想,一个数组记录起始点(记录出现过的次数),另一个数组记录截至点(记录出现过的次数),从0开始遍历,设定一个长度为d的滑动窗口…...
【大数据入门 | Hive】函数{单行函数,集合函数,炸裂函数,窗口函数}
1. 函数简介: Hive会将常用的逻辑封装成函数给用户进行使用,类似于Java中的函数。 好处:避免用户反复写逻辑,可以直接拿来使用。 重点:用户需要知道函数叫什么,能做什么。 Hive提供了大量的内置函数&am…...
python sqlite3 工具函数
起因, 目的: sqlite3 最常用的函数。 比如,某人给了一个 database.db 文件。 但是你登录的时候,不知道账号密码。 此文件就是,查看这个数据库的详细内容。 有哪些表某个表的全部内容。添加数据 代码, 见注释 impor…...
顺丰Android面试题集锦及参考答案
TCP 三次握手和四次挥手是什么,挥手过程中主动方的状态是什么? TCP 三次握手是建立连接的过程: 第一次握手:客户端向服务器发送一个 SYN 报文,该报文包含客户端的初始序列号(seq=x)。此时客户端进入 SYN_SENT 状态。第二次握手:服务器收到客户端的 SYN 报文后,向客户端…...
uniapp中检测应用更新的两种方式-升级中心之uni-upgrade-center-app
uniapp一个很是用的功能,就是在我们发布新版本的app后,需要提示用户进行app更新,并告知用户我们新版的app更新信息,以使得用户能及时使用上我们新开发的功能,提升用户的实用度和粘性。注意:这个功能只能在app端使用 效…...
Python爬虫通过 Cookie 和会话管理来维持其在网站上的会话状态
Python 爬虫虽然是一个热门且非常实用的技术领域,但在实际开发中,确实存在一些困难的地方。以下是 Python 爬虫开发中常见的难点和挑战: 1. 处理反爬虫机制 许多网站为防止爬虫的恶意访问,采取了各种反爬虫措施。常见的反爬虫技…...
使用STM32单片机实现无人机控制系统
无人机控制系统是无人机的大脑,负责处理无人机的姿态控制、导航和通信等功能。本文将详细介绍如何使用STM32单片机实现无人机控制系统,包括硬件设计、软件设计、系统调试与测试等内容。 一、系统概述 无人机控制系统通常包括飞行控制器、传感器、执行器…...
【包教包会】2D图片实现3D透视效果(支持3.x、支持原生、可合批)
将去年写的SpriteFlipper从2.x升级到3.x。 如果需要2.x版本或需要了解算法思路,请移步:https://blog.csdn.net/weixin_42714632/article/details/136745051 优化功能:可同时绕X轴和Y轴旋转,两者效果会叠加。 完美适配Web、原生…...
解决nginx+tomcat宕机完美解决方案
问题描述:公司项目太老了,还是tomcat项目,部署两台tomcat,做了nginx负载。最近发现每到上午10,下午3点,tomcat就宕机了,死活找不到原因,客户影响超期差,实在让人头疼。 解决思路&am…...
第十一章 缓存之更新/穿透/雪崩/击穿
目录 一、什么是缓存 二、缓存更新策略 2.1. 缓存主动更新策略 2.1.1. Cache Aside模式(主流) 2.1.2. Read/Write Through模式 2.1.3. Write Behind模式 2.1.4. 总结 三、缓存穿透 四、缓存雪崩 五、缓存击穿 5.1. 互斥锁实现 5.1.1…...
一款完全开源并免费的监测与分析系统,支持监测,预警,分析,报告,支持本地化部署(附源码)
前言 在当今这个信息爆炸的时代,企业和个人都需要时刻了解网络上的动态,以便及时了解自身品牌形象和社会舆论的变化。然而,现有的舆情监测工具往往价格昂贵,且cao作复杂,难以满足普通用户的需求。 在这种背景下&…...
python中时间函数及其应用
近段时间,因在改写以前写的学校自动铃声控制系统,又学到了一些新的知识,特记录如下: 一、时间函数基础 1、time模块中的函数及其用法 time.time(): 返回当前时间的时间戳,即自1970年1月1日以来的秒数。 time.localt…...
MoveIt2-humble】入门教程----第一个 C++ MoveIt 程序
四节教程会手把手带你写一个完整的 Moveit 控制程序,包括轨迹规划、RViz可视化、添加碰撞物体、抓取和放置。 1 创建依赖包 进入到教程所在工作空间下的src目录,创建一个新的依赖包。 ros2 pkg create \--build-type ament_cmake \--dependencies mov…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
