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_
限制的约束。
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 withVUE_APP_
. This is useful for version infoprocess.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_
限制的约束。