Aller au contenu principal

Migration vers NestJS

15 février 2023

Contributeurs

S. François, H. Dumont

Statut

Accepté

Contexte

Dans un contexte où nous avons eu pas mal d'écueil avec le plugin Meilisearch pour Strapi, nous avons souhaité faire évoluer l'architecture du produit pour orchestrer nous-même l'indexation des documents pour le site 1jeune1solution. Nous souhaiterions idéalement exposer une API pour des tâches d'indexation ou de maintenance via l'ETL.

De plus, nous souhaiterions utiliser un framework standard et largement répandu pour permettre une appropriation plus aisée de la codebase à de nouveaux venus sur le projet.

Décision

Cette migration vers NestJS nous permettra d'exposer facilement une API à l'avenir et maintiendra la cohérence de la codebase de par la standardisation apportée par NestJS.

Conséquences

  • L'arborescence des fichiers a largement revue été revue.

Anciennement :

.
├─── docs
├─── hooks
├─── src
│ ├── cli
│ ├── configuration
│ ├── evenements
│ ├── logements
│ └── stages
└─── test

Et aujourd'hui :

.
├─── apps
│ ├── cli
│ │ ├── src
│ │ └── test
│ ├── configuration
│ │ ├── src
│ │ └── test
│ ├── evenements
│ │ ├── src
│ │ └── test
│ ├── logements
│ │ ├── src
│ │ └── test
│ └── stages
│ ├── src
│ └── test
├─── docs
└─── hooks
  • La manière de builder les applications a été modifiée :
{
"scripts": {
- "build": "tsc tsconfig.prod.json && tsc-alias",
+ "build": "nest build api && nest build cli"
}
}
  • La manière d'ajouter une commande à la CLI a été modifiée (voir la documentation de NestJS) ;

  • La manière de lancer une commande via la CLI a été modifiée :

-$ npm run cli -- -d [domain] -a [action] -f [flowName]
+$ npm run cli -- [action] [flowName]

Autres pistes explorées

  • Mise en place d'une API via ExpressJS mais qui ne résolvait pas notre second problème de standardisation et qui était davantage coûteuse à long terme ;
  • Mise en place d'une API via HapiJS avec les mêmes inconvénients que ci-dessus.