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


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


    前言

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


    一、dotenv

    它能将环境变量中的变量从 .env 文件加载到 process.env 中

    二、使用步骤

    1.引入库

    yarn add dotenv --dev 
    
    • 1

    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"}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    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)
     	....
     }
    }
    ....
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    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"
        )
      }
    }),
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    总结

    env文件在配置文件都可以用, vue页面用的时候需要在 webpack.base.conf.js 重新配置。

  • 相关阅读:
    木子-前端-方法标签属性小记(普通jsp/html篇)2023~2024
    python学习笔记
    【MySQL】数据库进阶之索引内容详解(上篇 索引分类与操作)
    HLA-Face: Joint High-Low Adaptation for Low Light Face Detection 论文阅读笔记
    ArcPy图斑编号-根据字段长度自动补齐
    C++从0吃透string类
    Ollama部署大模型并安装WebUi
    Linux开发板配置静态IP
    studio one 6正版多少钱?怎么购买studio one 更便宜,有优惠券哦
    Ubuntu server20.04 源码编译qemu-6.1.1(带spice和KVM)
  • 原文地址:https://blog.csdn.net/simpledate/article/details/125927844