filename
.env
content
TOP_DOMAIN=a.com
AI_DOMAIN=ai.a.com
FM_DOMAIN=fm.a.com
filename
.env.js
content
const TOP_DOMAIN = 'a.com';
module.exports = {
TOP_DOMAIN,
AI_DOMAIN: `ai.${TOP_DOMAIN}`,
FM_DOMAIN: `fm.${TOP_DOMAIN}`
}
.env 文件本来就不应该编程,它不像 babel/webpack 这类复杂工具的配置,内含的逻辑应该是非常少的,关于此类配置文件的一些讨论可以看 https://12factor.net/config.env 是 *nix 以来业界约定俗成的格式,门槛较低且跨平台跨语言跨框架,改成 .env.js 意义不大并且增加了我们的维护成本
.env文件本来就不应该编程,它不像 babel/webpack 这类复杂工具的配置,内含的逻辑应该是非常少的,关于此类配置文件的一些讨论可以看 https://12factor.net/config.env是 *nix 以来业界约定俗成的格式,门槛较低且跨平台跨语言跨框架,改成.env.js意义不大并且增加了我们的维护成本- 可扩展性问题我们可以用 https://github.com/motdotla/dotenv-expand/,这个可以在 3.5 里加上
在这块,还是你们考虑的还是更全面,受教了。 给个👍
可以不用其他插件,vue-cli英文文档(非中文)上有:
在vue.config.js文件中,编写代码:
// 如果是测试环境,则根据CI命令参数,动态修改测试环境地址(测试环境1、测试环境2、测试环境3)
// VUE_APP_API_URL=http://test1.example.com
const lastArgv = process.argv.slice(-1)[0]; // 获取node最后一个命令参数
if (lastArgv.indexOf('--dev=') === 0) {
const env = lastArgv.split('=')[1];
// 如果是正整数,则替换
if (Number.isInteger(Number(env)) && Number(env) >= 0) {
process.env.VUE_APP_API_URL = process.env.VUE_APP_API_URL.replace('test', env);
}
}
module.exports = {
// other code
}
// 将 test1.example.com 替换为 test2.example.com
在执行打包的时候:npm run build:dev -- --dev=2
这样在打包的之后,自动把测试环境的 test1 地址改成 test2 地址
Most helpful comment
.env文件本来就不应该编程,它不像 babel/webpack 这类复杂工具的配置,内含的逻辑应该是非常少的,关于此类配置文件的一些讨论可以看 https://12factor.net/config.env是 *nix 以来业界约定俗成的格式,门槛较低且跨平台跨语言跨框架,改成.env.js意义不大并且增加了我们的维护成本