【发布时间】:2021-12-04 16:49:26
【问题描述】:
我正在开发一个 Vue 3 Web 应用程序,该应用程序将为多个客户构建和部署。每个客户都有自己的标题、标志、图标等。
我需要的是为每个客户构建应用程序及其特定信息(假设在TheFooter.vue 组件中显示客户信息)。
重要的要求是,当为客户构建应用程序时,出于隐私原因,其他客户的信息不得包含在最终构建的文件中(我的意思是运行 npm run build 后的 /dist 文件夹)。
我尝试过的方法:
- 创建一个customers.js 文件并像这样导出一个对象:
const customers = {
CUSTOMER_A: {
title: 'Customer A',
logo: 'assets/customer_a_logo.png',
// other privacy related data
},
CUSTOMER_B: {
title: 'Customer B',
logo: 'assets/customer_b_logo.png',
// other privacy related data
}
export default const customer[process.env.VUE_APP_CURRENT_CUSTOMER]
然后在.env 文件中,创建一个VUE_APP_CURRENT_CUSTOMER 键,其值类似于CUSTOMER_A、CUSTOMER_B、...
并在TheFooter.vue 中导入这样的客户数据:const customer = require('./customers.js').default
但是这样我分析了/dist文件夹中最终构建的js,其他客户的信息都是可用的。
-
基于Vue CLI modes,为每个客户创建一个
.env.customer_x文件并在其中添加客户特定的数据,然后在构建应用程序时使用--mode标志(例如vue-cli-service build --mode customer_x)引用当前客户。如果客户太多,我们最终会得到太多 .env.customer_... 文件。 (此解决方案还有其他注意事项吗?) -
创建一个 json 文件(例如 customers.json)并在
TheFooter.vue中使用它,如下所示:import { process.env.VUE_APP_CURRENT_CUSTOMER } from './customers.json'
但似乎不可能在 import 语句中使用变量,我需要使用 env 变量(用于 ci/cd 管道)
对于这个问题有什么想法或最佳实践吗?
提前致谢!
【问题讨论】:
标签: javascript vue.js webpack vuejs3 vue-cli