4969 字
9 分钟

Vite多环境配置实战指南

文章摘要
DeepSeek R1
本文介绍了在Vite项目中配置多环境变量的方法。通过创建.env、.env.development和.env.production文件,并在package.json中配置相应脚本,实现开发与生产环境变量的区分和自动加载。在代码中可通过import.meta.env访问以VITE_开头的变量,并在vite.config.js中利用loadEnv函数根据模式动态配置如代理目标等参数,从而灵活适配不同环境的API请求需求。

Vite多环境配置实战指南

一、前言

一个项目通常会有开发、测试、生产等多个版本,不同环境需要请求不同的API接口,频繁更改配置十分麻烦。使用环境变量可以简化配置,将环境切换工作交给代码自动处理。

二、开发环境

开发环境即编码时运行的环境,通过执行 npm run devnpm run serve 在本地运行项目时的环境。

三、生产环境

生产环境是项目部署到服务器后运行的环境。通过 npm run build 打包项目后,项目即运行在生产环境中。我们可以为不同环境配置不同的环境变量,以实现开发与生产的兼容。

四、多环境前端工程架构流程

多环境架构流程图

五、实战步骤

1. 新建项目目录
2. 新建 index.html
3. npm init -y
4. npm i axios -S
5. npm i vite -D
6. 在 package.json 的 scripts 中添加 "dev": "vite"
7. npm run dev

最终目录结构如下:

目录结构

接下来新建 vite.config.js 文件:

import { defineConfig } from "vite";
export default defineConfig({
  server: {
    open: false, // 项目启动时是否打开页面
    host: "127.0.0.1",
    port: 3456,
    proxy: {
      "^/api/": {
        target: "https://www.bilibili.com/", // 后台服务器地址
        changeOrigin: true, // 允许跨域
        rewrite: (path) => path.replace(/^\/api/, ""),
      },
    },
  },
});

然后新建 main.js,并在 index.html 中引入:

// main.js
import axios from 'axios';
axios.get('/api/index/ding.json').then(res => {
  console.log(res.data);
});



  
  
  Vite学习


  Vite开发环境、生产环境配置
  

打开浏览器,Axios 数据请求成功:

请求成功

六、配置环境文件

1. 全局环境文件 (.env)

在项目根目录下(与 package.json 同级)新建 .env 文件:

NODE_ENV = env
VITE_NAME='全局环境'
VITE_BASE_URL=''

说明:全局环境文件,当没有设置其他环境变量时,会加载此文件内容。适用于所有版本使用同一接口地址的情况。

2. 开发环境文件 (.env.development)

在项目根目录下新建 .env.development 文件:

NODE_ENV = development
VITE_NAME='开发环境'
VITE_BASE_URL='/api'

说明:开发环境配置文件。执行 npm run dev 命令时,会自动加载此文件,并覆盖 .env 文件中定义的环境变量。

3. 生产环境文件 (.env.production)

在项目根目录下新建 .env.production 文件:

NODE_ENV = production
VITE_NAME='生产环境'
VITE_BASE_URL='http://xxxxxx/api'

说明:生产环境配置文件。执行 npm run build 命令时,会自动加载此文件,并覆盖 .env 文件中定义的环境变量。

七、package.json 脚本配置

{
  "scripts": {
    "dev": "vite --mode development",
    "build": "vite build --mode production",
    "start": "vite --mode production",
    "build:env": "vite build --mode development",
    "preview": "vite preview --mode production"
  }
}
  • dev:在本地开启开发环境服务(mode='development')
  • start:在本地开启生产环境服务(mode='production')
  • build:打包到生产环境(读取 .env.production 文件)
  • build:env:打包到测试环境(读取 .env.development 文件)
  • preview:预览生产环境构建结果

八、环境变量使用

8.1 开发环境

打印环境变量:

console.log(import.meta.env);

执行 npm run dev,浏览器控制台将打印 .env.development 文件中的内容。

开发环境变量

8.2 生产环境预览

直接使用 Live Server 运行打包后的 dist/index.html 可能无法正常请求数据,因为请求的接口是 Live Server 重新启动的服务。

正确预览方式

  1. package.json 中添加 "preview": "vite preview --mode production"
  2. 执行以下命令:
npm run build
npm run preview

预览命令

浏览器中预览,接口请求正常:

生产环境预览

九、在 vite.config.js 中动态切换配置

9.1 defineConfig 函数参数

defineConfig 传入函数时,可以接收 commandmode 参数:

  • command:'serve'(npm run dev)或 'build'(npm run build)
  • mode:'development' 或 'production'
export default defineConfig(({ command, mode }) => {
  console.log("command:", command);
  console.log("mode:", mode);
  
  return {
    base: "./",
    server: {
      open: false,
      host: "127.0.0.1",
      port: 3456,
      proxy: {
        "^/api/": {
          target: "https://www.bilibili.com/",
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/api/, ""),
        },
      },
    },
  };
});

9.2 使用 loadEnv 获取环境变量

loadEnv 函数接收三个参数:

  • mode:环境模式
  • envDir:环境变量文件所在目录
  • prefix:环境变量前缀(默认为 'VITE_')
import { defineConfig, loadEnv } from "vite";

export default defineConfig(({ command, mode }) => {
  const config = loadEnv(mode, './');
  console.log("环境变量配置:", config);
  
  return {
    base: "./",
    server: {
      open: false,
      host: "127.0.0.1",
      port: 3456,
      proxy: {
        "^/api/": {
          target: config.VITE_TARGET, // 从环境变量中获取
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/api/, ""),
        },
      },
    },
  };
});

9.3 环境变量文件示例

.env.development

NODE_ENV = development
VITE_NAME = '开发环境'
VITE_BASE_URL = '/api'
VITE_TARGET = 'https://baidu.com/'

.env.production

NODE_ENV = production
VITE_NAME = '生产环境'
VITE_BASE_URL = ''
VITE_TARGET = 'https://www.bilibili.com/'

十、总结

通过合理配置环境变量,我们可以轻松管理不同环境下的前端工程配置。Vite 提供了完善的环境变量支持,结合 loadEnv 函数和 defineConfig 的参数,可以实现配置的动态切换,提高开发效率和部署灵活性。


本文转自 https://blog.csdn.net/blue_121/article/details/131221210,如有侵权,请联系删除。

Firefly
Firefly
Hello, I'm Firefly.
公告
欢迎体验 Firefly 主题复刻版,壁纸与布局已全面同步。
查看文档