Как исключить модули из угловой сборки?
В моем угловом приложении есть куча модулей.
Я хочу исключить несколько модулей из угловой сборки.
Пример: у меня есть один репозиторий, в котором у меня есть весь код со всеми модулями angular, и он работает нормально. Некоторые из модулей: модуль чата, модуль приборной панели, модуль продуктов, модуль устройств.
- сценарий 1. Я хочу предоставить одному клиенту только модуль чата и модуль продукта.
- сценарий 2: я хочу передать другому клиенту только модуль панели и модуль диаграммы.
Как я могу создать сборку angular, чтобы она использовала репозиторий, но создавала сборку на основе требований клиентского модуля и исключила ненужные модули из сборки?
2 ответа
Вы можете поддерживать отдельную ветвь для разных клиентов и исключать модули из модуля приложения и отключать маршрутизатор и связанные с ним настройки тех модулей, которые не требуются, а также создавать и доставлять код клиенту.
//app-module.ts
import { NgModule, Optional } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule({}) class MyModule {}
// you can also put this config client-specific config
const client1 = true;
@NgModule({
imports: [ BrowserModule, client1 ? MyModule : []],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule {
constructor(@Optional() module: MyModule) {
console.log(module);
}
}
В случае ленивой загрузки включить модули маршрутизации по условию (не проверено)
//app-module.ts
const client1 = true;
let GlobalRoutingModule
if (client1) {
import('./app-routing-client1.module')
.then((routingModule) => {
GlobalRoutingModule = routingModule
});
} else {
import('./app-routing-client2.module')
.then((routingModule) => {
GlobalRoutingModule = routingModule
});
}