Webpack 3 与 Vue 2 集成 dotenv 实现多环境配置

作者:南风

时间:2026-10-31

浏览:370

本文详解在 Webpack 3 和 Vue 2 项目中如何利用 dotenv 库实现多环境配置。通过引入 dotenv 并创建 .env 文件,按优先级加载环境变量。文章涵盖代理配置修改、DefinePlugin 注入变量至 Vue 组件等关键步骤,帮助开发者灵活管理不同部署环境的配置参数。

文章目录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

介绍在 Webpack 3 结合 Vue 2 的技术栈中,采用 dotenv 方案进行多环境配置的具体方法。

一、dotenv

该工具的主要作用是将环境变量从 .env 文件加载到 process.env 对象中。

二、使用步骤

1.引入库

yarn add dotenv --dev 

2.添加.env文件

在此步骤中需要添加 .env、.env.dev、.env.dev.local 以及 .env.production 等文件。通常情况下,.env.dev.local 文件不会被提交到 git 仓库。环境变量的覆盖顺序遵循以下优先级:.env.*.local > .env.* > .env。

# port
VUE_PORT = 3200
# 应用接口上下文
VUE_APP_CONTEXT_NEW = /CONT
# API请求前缀 
VUE_APP_API_PREFIX = /apis
VUE_PUBILIC_PATH = site
# 当运行 vue-cli-service build 时生成的生产环境构建文件的目录。
VUE_OUTPUT_DIR = site
#  放置生成的静态资源 (js、css、img、fonts) 的目录(相对于outputDir目录)。
VUE_ASSETSDIR = static
# 指定生成的 
VUE_INDEX_PATH = index.html
VUE_PROXY = {"/apis": "http://192.168.1.10:8089"}

3.修改代理配置

需要修改 config/index.js 文件,具体路径需根据实际项目配置进行调整。

const dotenv = require("dotenv");
const fs = require("node:fs");
const appDirectory = fs.realpathSync(process.cwd());
const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
const pathsDotenv = resolveApp(".env");
dotenv.config({ path: `${pathsDotenv}.${process.env.NODE_ENV}.local` });
dotenv.config({ path: `${pathsDotenv}.${process.env.NODE_ENV}` });
dotenv.config({ path: pathsDotenv });
console.log("【process.env.VUE_PORT】", process.env.VUE_PORT);
console.log("【process.env.VUE_PROXY】", process.env.VUE_PROXY);
const createProxy = obj => {
  const ret = {};
  const httpsRE = /^https:\/\/\/;
  if (obj) {
    obj = JSON.parse(obj);
    for (const prefix in obj) {
      const target = obj[prefix];
      const isHttps = httpsRE.test(target);
      ret[prefix] = {
        target: target,
        changeOrigin: true,
        ws: true,
        pathRewrite: path => path.replace(new RegExp(`^${prefix}`), ""),
        ...(isHttps ? { secure: false } : {})
      };
    }
  }
  console.debug(ret);
  return ret;
};
....
// 这个地方可以使用函数方式,都一样,改proxyTable就可以了。
module.exports = {
  dev: {
  	....
 	proxyTable: createProxy(process.env.VUE_PROXY)
 	....
 }
}
....

4.vue文件中如何使用环境变量

修改 webpack.base.conf.js 文件。根据实际需求配置所需的变量。

new webpack.DefinePlugin({
  "process.env": {
    NODE_ENV: JSON.stringify(process.env.NODE_ENV || "development"),
    VUE_APP_CONTEXT: JSON.stringify(
      process.env.VUE_APP_CONTEXT || "/CONTEXT"
    ),
    VUE_APP_API_PREFIX: JSON.stringify(
      process.env.VUE_APP_API_PREFIX || "/contextapi"
    )
  }
}),

总结

env 文件中的变量可以在配置文件中直接使用,而在 Vue 页面中使用时,需要在 webpack.base.conf.js 中重新配置。

到此这篇关于 webpack 3 + Vue2 使用 dotenv 配置多环境的文章就介绍到这了,更多相关 webpack 配置多环境内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章