news 2026/7/29 7:27:39

vue通过mode参数动态执行vite环境变量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vue通过mode参数动态执行vite环境变量

一、说明

通常在vue和vite项目中,若要使用环境变量,先需要在项目根目录下创建对应环境的.env文件,Vite 会根据--mode指定的模式自动加载对应文件。这种模式需要先设置对应的.env文件,如果变量值不确定,需要动态设置时,就有点有不太适用,是否可以解除.env文件的限制,通过--mode直接动态设置vite环境变量的值呢?

二、动态设置vite环境变量

1、增加setup.js文件,用于动态设置构建参数

文件目录:scripts/setup.js

/** * 动态环境参数脚本,用于设置环境变量并执行 vite 命令。 * 用法: node scripts/setup.js dev -- PA * node scripts/setup.js build -- PB * 构建:pnpm dev:exp -- PA pnpm build:exp -- PA */ const { spawn } = require('child_process'); const path = require('path'); // 获取命令行参数 const args = process.argv.slice(2); const command = args[0]; // dev 或 build const envFlag = args[1]; // PA 或 PB 等 // 验证参数 if (!command) { console.error('错误: 请指定命令 (dev 或 build)'); process.exit(1); } // 提取环境模式 (去掉前缀 --) let mode = envFlag || 'dev'; //envFlag.slice(2); // 根据命令构建 vite 命令 const viteCommand = 'vite'; let viteArgs; // 设置环境变量 process.env.VITE_APP_MODE = mode; if (command === 'dev') { viteArgs = ['--mode', mode]; } else if (command === 'build') { viteArgs = ['build', '--mode', mode]; } else { console.error(`错误: 不支持的命令 "${command}"`); process.exit(1); } console.log(`运行环境: ${mode}`); console.log(`执行命令: ${viteCommand} ${viteArgs.join(' ')}`); // 执行 vite 命令 const child = spawn(viteCommand, viteArgs, { stdio: 'inherit', shell: true, cwd: path.resolve(__dirname, '..'), }); child.on('exit', code => { process.exit(code); });

2、将vite环境变量注入到process.env(非必需)

由于本人使用的是process.env,所以需要在vite.config.ts中注入一下,通过import.meta.env访问环境变量,则不需要此步骤

import { fileURLToPath, URL } from 'node:url'; import { defineConfig, loadEnv } from 'vite'; import vue from '@vitejs/plugin-vue'; export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd()); return { // 将环境变量注入到客户端代码 define: { 'process.env': JSON.stringify({ NODE_ENV: process.env.NODE_ENV, ...env, }), }, plugins: [vue()], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, }; });

3、在package.jsonscripts中配置不同环境的命令

{ "scripts": { "dev": "vite", "dev:exp": "node scripts/setup.js dev", "build:exp": "node scripts/setup.js build", } }

执行命令示例

# 启动开发服务 并指定项目参数 pnpm dev:exp -- pA # 打包代码,并指定项目参数 pnpm build:exp -- PA # 启动默认服务 不指定项目参数 pnpm dev

程序运行结果

三、在代码中使用环境变量

可以通过process.env.VITE_APP_MODE 或 import.meta.env.VITE_APP_MODE; 来获取动态编译时设置的vite环境变量参数的值。

<template> <div> </div> </template> <script lang="ts" setup> const projectMode = process.env.VITE_APP_MODE; // 获取当前运行模式 console.log('projectMode', projectMode); </script>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 5:42:09

通义千问3-Reranker-0.6BGPU算力:单A10实测吞吐达12 req/s(batch=8)

通义千问3-Reranker-0.6B GPU算力实测&#xff1a;单A10吞吐达12 req/s&#xff08;batch8&#xff09; 1. 项目概述 通义千问3-Reranker-0.6B是Qwen3 Embedding模型系列中的轻量级重排序模型&#xff0c;专门设计用于文本排序和相关性评估任务。这个6亿参数的模型在保持高性…

作者头像 李华
网站建设 2026/7/21 5:58:26

零样本学习如何在提示工程中大放异彩?实践告诉你

零样本学习与提示工程的碰撞&#xff1a;让AI在未知任务中大放异彩 副标题&#xff1a;从理论到实践&#xff0c;掌握ZSL在Prompt设计中的关键技巧 摘要/引言 你是否遇到过这样的困境&#xff1f;——想让AI处理一个新任务&#xff0c;却没有标注数据&#xff1b;想给电商商品分…

作者头像 李华
网站建设 2026/7/20 10:17:47

文本处理瑞士军刀:MTools功能深度体验报告

文本处理瑞士军刀&#xff1a;MTools功能深度体验报告 1. 镜像概述与核心价值 MTools是一个基于Ollama框架和Llama 3大模型的多功能文本处理工具集&#xff0c;堪称文本处理领域的"瑞士军刀"。它将强大的AI文本处理能力封装成简单易用的Web界面&#xff0c;为用户提…

作者头像 李华
网站建设 2026/7/21 5:58:23

REX-UniNLU实现智能小说解析器:情节分析与角色关系挖掘

REX-UniNLU实现智能小说解析器&#xff1a;情节分析与角色关系挖掘 1. 项目背景与价值 小说解析一直是文学分析和内容挖掘中的难点。传统的人工分析方法效率低下&#xff0c;面对海量文本时更是力不从心。现在&#xff0c;借助REX-UniNLU这一零样本通用自然语言理解模型&…

作者头像 李华
网站建设 2026/7/21 5:58:15

LoRA训练助手在Linux系统的部署优化:Ubuntu20.04环境配置详解

LoRA训练助手在Linux系统的部署优化&#xff1a;Ubuntu20.04环境配置详解 1. 引言 如果你正在尝试在Linux系统上部署LoRA训练助手&#xff0c;可能会遇到各种环境配置问题&#xff1a;GPU驱动装不上、CUDA版本不兼容、训练时显存不足、分布式训练配置复杂... 这些问题我都遇到…

作者头像 李华
网站建设 2026/7/21 5:59:20

一键部署你的音乐分类AI:ccmusic-database/music_genre教程

一键部署你的音乐分类AI&#xff1a;ccmusic-database/music_genre教程 1. 项目介绍与核心价值 音乐流派分类一直是音乐技术领域的热门应用场景。无论是音乐平台的内容管理、个性化推荐&#xff0c;还是音乐教育辅助&#xff0c;准确识别音乐流派都具有重要价值。ccmusic-dat…

作者头像 李华