Le client est livré avec plusieurs modules permettant l'activation de certaines fonctionnalités.

Il est alors possible de choisir d'activer ou non ces modules avant le build du client pour sélectionner "à la carte" les fonctionnalités nécessaires à l'établissement.
En parallèle, un module client est souvent couplé avec un microservice côté backend dédié à cette même fonctionnalité.

Pour ne pas inclure une fonctionnalité sur l'application, il conviendra donc :

  1. de ne pas activer le module côté client avant le build de l'application à publier sur les stores
  2. de ne pas déployer le microservice correspondant à cette fonctionnalité côté backend

L'activation et le paramétrage des modules du client se fait dans le fichier user-frontend-ionic/src/environments/environment.ts

La liste des modules paramétrables se situent sous la variable enabledModules :

enabledModules: [
    AuthModule,
    CalendarModule.forRoot({ numberOfEventsLimit: 3 }),
    CardsPageModule.forRoot({ knownErrors: ['NO_PHOTO', 'NO_ACTIVE_CARD', 'UNPAID_FEES'] }),
    ChatbotModule.forRoot({ chatbotLogoRegex: /_ully5/i }),
    ClockingModule,
    ContactUsModule,
	// ...
]

On y retrouve les instances de modules à inclure au build, avec une éventuelle configuration qui les accompagne. Par exemple, pour le module Calendar, il est possible d'ajouter une configuration indiquant le nombre d'événements que l'on souhaite voir s'afficher au max sur le widget en page d'accueil.

Pour ne pas inclure certains modules au projet, il suffit donc de retirer leur instance déclarée dans cette liste.

Liste des modules présents dans le fichier


Les module Matomo et Reseervations sont les seuls modules qui ne nécessitent pas un microservice côté backend

Retirer les modules au moment du build

Le paramétrage ci-dessus permet d'indiquer à Angular que les modules sont à inclure ou non dans son système de routing. Mais cela n'empêche pas la compilation des sources de ces modules, qui va alors créer un dossier dist pour chacun. 

Pour éviter de build inutilement les sources d'un module qui ne sera pas activé il convient alors de modifier le script npm module:build-all présent dans le fichier user-frontend-ionic/package.json :

"module:build-all": "npm run module:build shared && npm run module:build preferences && npm run module:build features && npm run module:build auth && npm run module:build map && npm run module:build rss && npm run module:build cards && npm run module:build schedule && npm run module:build contacts && npm run module:build notifications && npm run module:build important-news && npm run module:build clocking && npm run module:build reservation && npm run module:build menu && npm run module:build chatbot && npm run module:build static-pages && npm run module:build social-network && npm run module:build contact-us && npm run module:build restaurants && npm run module:build unread-mail && npm run module:build calendar",

Localisez le ou les modules que vous ne souhaitez pas activer et retirez le bloc de script npm les concernant.


Par exemple, si je ne souhaite pas inclure la fonctionnalité Cartes Dématérialisées, il faudra retirer le bloc `&& npm run module:build cards` (en plus bien évidemment de retirer son instance dans le fichier environment.ts)

Références à ces modules

Il conviendra également en parallèle de s'assurer qu'aucune référence ou lien vers les modules désactivés ne soient présents côté CMS Headless.
Par exemple si le module des Cartes Dématérialisées est désactivé, il faudra veiller à ce que l'entrée 'Carte' dans le menu soit retirée.