Исключить файлы из угловой среды - PullRequest
0 голосов
/ 12 марта 2019

Я создаю приложение, которое устанавливаю на разных клиентах. Для этого я использую разные среды, например

environment.costumer1.ts environment.costumer2.ts

Дело в том, что некоторые клиенты используют Service Services Workers, а другие нет, поэтому я создал два разных app.module.ts

app.module.ts
app.module-without-service-worker.ts

Итак, когда клиент запрашивает у меня приложение без Service Worker (я использую сервис уведомлений, который не хочу показывать, кто его не хочет), я помещаю его в angular.json, внутри fileReplacements

{   
  "replace": "src / app / app.module.ts",
  "with": "src / app / app.module-without-service-worker.ts" 
}

Плохо то, что при сборке основного приложения я получаю следующую ошибку:

ОШИБКА в: Введите AppComponent в D: / development / Портал для пациентов / терпеливый демо-портал / pp демонстрационный фронт / src / app / app.component.ts is часть объявлений 2-х модулей: AppModule в D: / development / Портал для пациентов / демо-портал для пациентов / демо-страница pp front / src / app / app.module.ts и AppModule в D: / development / Портал для пациентов / Портал-демо-версия пациента / демо-версия pp front / src / app / app.module- без-сервис-worker.ts!

Есть ли способ исключить файлы из среды?

Ответы [ 4 ]

0 голосов
/ 12 марта 2019

Я бы порекомендовал вам создать свойство в файле среды.

environmentx.ts

export const environment = {
  production: false;
  serviceWorker: false;
};

app.module.ts

imports: [
    BrowserModule,
    AppRoutingModule,
    ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.serviceWorker && environment.production})
],
0 голосов
/ 12 марта 2019

Если есть отдельная сборка для client1 и client2, то вы можете просто сделать следующее:

Открыть файл angular.json и найти строку

"serviceWorker": true

Если вы хотитеактивный работник, тогда значение равно true, иначе false.

0 голосов
/ 12 марта 2019

Приложение всегда должно иметь одну точку входа, т.е. AppModule.Поэтому сначала вы никогда не должны искать решение в построении двух отдельных AppModule.

Если ваша проблема ограничена только предоставлением сервисного работника в зависимости от среды, тогда @MoxxiManagarm сказал, что вы можете зарегистрировать сервисного работника в вашем приложении условно в зависимости от среды.

Чтобы зарегистрировать сервисработник на основе окружающей среды app.module.ts

imports: [
    BrowserModule,
    AppRoutingModule,
    ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })
],
0 голосов
/ 12 марта 2019

Разве вы не можете использовать

ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })

Просто определите флаг в свойствах вашей среды.См. https://blog.angular -university.io / angular-service-worker /

...