webpack 3 + Vue2 使用dotenv配置多环境

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


前言

webpack 3 + Vue2 使用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/indes.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 重新配置。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具,可以将多个模块打包成一个或多个静态资源文件。Vue 是一个流行的 JavaScript 框架,用于构建用户界面。 在将 Vue 项目打包时,可以使用 Webpack 来生成公共的配置文件,以便在不同环境中共享和重复使用。 首先,可以创建一个名为 `webpack.base.config.js` 的公共配置文件。该文件会包含一些通用的配置,例如入口文件、输出路径、加载器、插件等。通常,会将所有环境共有的配置项放在这个文件中。例如: ```javascript module.exports = { entry: './src/main.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js', }, module: { rules: [ { test: /\.vue$/, loader: 'vue-loader', }, // 其他加载器规则... ], }, plugins: [ new VueLoaderPlugin(), // 其他插件... ], }; ``` 然后,在不同环境配置文件(如 `webpack.dev.config.js`、`webpack.prod.config.js` 等)中,可以通过引入公共配置文件并进行合并来继承公共的配置。例如: ```javascript const merge = require('webpack-merge'); const baseConfig = require('./webpack.base.config.js'); module.exports = merge(baseConfig, { // 为开发环境或生产环境添加额外的配置项 }); ``` 这样,可以在不同环境中共享公共配置,减少重复工作,并且方便管理和维护项目。 最后,可以使用命令行或配置文件来指定要使用环境配置文件,以便在打包时根据不同环境生成不同配置。 通过使用 Webpack 生成公共配置文件,可以更好地组织和管理 Vue 项目的打包配置,提高开发效率,并且方便进行项目的扩展和维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值