webpack - 如何根据生产或开发模式读取不同的 .env 文件?

标签 webpack vue.js vue-cli

我正在使用 Vue 和 webpack,其中有一个环境变量告诉 webpack 为生产或开发构建。

这是有效的:

NODE_ENV=production webpack

console.log(process.env)

但是,this documentation explains您可以根据生产或开发模式使用不同的 .env 文件来更改应用程序中的变量。

.env 文件

VUE_APP_ROOT=http://localhost:8000/
VUE_APP_BASE_URL=http://localhost:8000/api/

.env.prod 文件

VUE_APP_ROOT=http://realaddress/
VUE_APP_BASE_URL=http://realaddress/api/

但我不清楚这些 .env 文件是如何被访问的?显然这在您使用 vue-cli 时有效,但在我的应用程序中这记录未定义:

console.log("environment variables")
console.log(process.env.VUE_APP_ROOT)
console.log(process.env.VUE_APP_BASE_URL)

如何在没有 vue-cli 的情况下根据生产模式访问不同的 .env 文件?

最佳答案

您可以使用 dotenv插件。

// webpack.config.js
const Dotenv = require('dotenv-webpack');

module.exports = {
  ...
  plugins: [
    new Dotenv()
  ]
  ...
};

要根据环境加载文件,您可以利用process.env.NODE_ENV:

// webpack.config.js
const Dotenv = require('dotenv-webpack');
const env = process.env.NODE_ENV;

module.exports = {
  ...
  plugins: [
    new Dotenv({
      path: `./.env.${env === "production" ? "prd" : "dev"}`,
    })
  ]
  ...
};

你可以看到 vue-cli 在这个 repo 中做类似的事情

关于webpack - 如何根据生产或开发模式读取不同的 .env 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50655808/

相关文章:

javascript - 无法解析 ApplicationModule : (? 的所有参数)- Angular 7 JIT

javascript - Webpack 导出功能

javascript - 看。当 Vuex 存储中的值被修改时,将焦点设置在组件的输入上

javascript - Vue js 在编译时删除脚本标签

docker-compose 与 vue-cli 不工作

javascript - ES6 模块、babel/webpack。导入/导出语句不起作用

javascript - ssh2 : Module parse failed: Unexpected character '�'

javascript - 如何使用 vue/Quasar 进行日期范围验证

javascript - 使 v 菜单标题固定在顶部

Webpack 从 vendor 文件中进行代码拆分?