Vue.js:在vue.config.js中定义计算环境变量(vue cli 3)

Vue.js: Defining computed environment variables in vue.config.js (vue cli 3)

Vue CLI 3 的文档在这里 https://cli.vuejs.org/guide/mode-and-env.html#using-env-variables-in-client-side-code:

You can have computed env vars in your vue.config.js file. They still need to be prefixed with VUE_APP_. This is useful for version info process.env.VUE_APP_VERSION = require('./package.json').version

这正是我想要做的。但是我无法找到如何在 vue.config.js 中实际定义环境变量。我试过了:

module.exports = {
    process.env.VUE_APP_VERSION: require("../package.json").version,
    ...
}

但它只是产生一个错误:

ERROR  SyntaxError: Unexpected token .
    /Users/lhermann/htdocs/langify/frontend/vue.config.js:2
    process.env.VUE_APP_VERSION: require("../package.json").version,
           ^

有人知道吗?

环境变量不是配置导出的一部分,您只需在 vue.config.js 文件中设置它们,例如

process.env.VUE_APP_VERSION = require('./package.json').version

module.exports = {
  // other config, eg configureWebpack
}

我提出了一个功能请求,希望将示例添加到文档中 ~ https://github.com/vuejs/vue-cli/issues/2864

公共环境变量:

根据 Environment Variables and Modes documentation,您可以通过将 .env 文件放在项目根目录中来指定环境变量。

变量将在您项目的 process.env.variableName 下自动访问。加载的变量也可用于所有 vue-cli-service 命令、插件和依赖项。

.env                # loaded in all cases
.env.local          # loaded in all cases, ignored by git
.env.[mode]         # only loaded in specified mode
.env.[mode].local   # only loaded in specified mode, ignored by git

您的 .env 文件应如下所示:

VUE_APP_MY_ENV_VARIABLE=value
VUE_APP_ANOTHER_VARIABLE=value

请注意,只有以 VUE_APP_ 开头的变量才会静态嵌入到带有 webpack.DefinePlugin 的客户端包中。

计算环境变量:

如果你想要需要预处理的变量,你可以使用chainWebpack 属性 of vue.config.js 来注入你想要的任何东西:

// vue.config.js

module.exports = {
  // ...,
  chainWebpack: config => {
    config.plugin('define').tap(args => {
      args[0]['process.env'].APP_VERSION = `"${require("../package.json").version}"`
      return args
    })
  }
  // ...
}

使用这个方法,你可以注入任何东西,任何你想要的名字;您不受 VUE_APP_ 限制的约束。