В качестве одного варианта можно использовать комбинацию псевдонимов и архитектурных правил для достижения требуемой функциональности.
1) Пропустить CLIENTID
через переменную среды или экспортировать ее из любого пользовательского файла конфигурации.Поскольку CI упоминается, давайте предположим, что используется process.env
.
2) Создайте псевдонимы для всех соответствующих путей, которые должны быть доступны для импорта.Это можно сделать в vue.config.js
(в случае @vue/cli
3.0+) или в конфигурационном файле веб-пакета.
Пример путей, упомянутых выше:
'~styles': `src/styles/${process.env.CLIENTID}`
'~components': `src/components/${process.env.CLIENTID}`
'~something': `src/something/${process.env.CLIENTID}`
3) Изменить проектструктура для хранения специфичных для клиента компонентов в отдельных папках, при этом общий код будет доступен через пути по умолчанию.
4) Используйте псевдонимы, которые разрешат правильные пути:
import CustomButton from '~components/custom-button.vue'
Если у вас есть планчтобы принести много версий для разных клиентов, может быть полезно реорганизовать архитектуру проекта, чтобы разделить все соответствующие активы для каждого CLIENTID
, например:
project |
|-- common |
| |--styles
| |--components
|
|--CLIENTID_1 |
| |--styles
| |--components
|
|--CLIENTID_2 |
|--styles
|--components
Таким образом, псевдонимы будут более удобными длязаявить и использовать:
'~common': `src/common`
'~client': `src/${process.env.CLIENTID}`
import CommonButton from '~common/components/common-button.vue'
import CustomButton from '~client/components/custom-button.vue'