Skip to content

[RFC]: publier une config jest #48

@pierrezimmermannbam

Description

@pierrezimmermannbam

Je voudrais récolter vos opinions sur la pertinence de rajouter sur ce repo des configs jest et rntl et de les publier sur npm.
Concrètement, on aurait une config expo et une config bare RN exportée et on les utiliserait comme ça

const baseConfig = require('@bam.tech/jest-config-expo');

module.exports = {
  ...baseConfig,
  // overrides
};

Avantages

Partage des best practices

On partage beaucoup de choses dans les config de jest sur les différents projets. Actuellement on fait des copier coller depuis la bootstrap doc ou alors depuis d’anciens projets (le pire cas potentiellement parce que les configs sont pas forcément bonnes)

En plus de rendre la maintenance plus compliquée, on peut passer à côté de choses très sympas qu’on a implémentées sur les enablers comme sucrase, le clear des mocks, le matcher custom pour les snapshots pour n'en nommer que quelques uns.

Setup et facilité de maintenance

Les projets auraient juste à installer le package et si tout va bien ça devrait rouler. Ensuite s'il y a des nouveautés ils auraient juste à bump le package

Open sourcé

Un autre avantage c’est que ça pourrait être open sourcé, je sais pas trop si ça serait utilisé en dehors de bam mais ça mange pas de pain

Maintenance des enablers

C'est peut-être un des points les plus importants. Aujourd'hui on a une config jest au niveau de chaque module (joconde, doc, cli, warehouse) et c'est un copié collé, du coup si on fait une modif à un endroit il faut la faire partout. Si on avait un package on aurait une seule source de vérité. Cependant on pourrait aussi résoudre ce problème de manière différente, par exemple en mettant la config à la racine et en référençant cette config dans la doc (ce qui serait sans doute une bonne idée, même si on avait le package publié on aurait pas à bump la version partout)

Inconvénients

Malheureusement tout n'est pas rose quand on utilise une lib pour sa config jest (j'en ai fait l'expérience sur un ancien projet):

  • la config est cachée en grande partie, i.e. on doit aller voir dans les node_modules pour voir ce qui se cache dans la config, pas très commode pour debug
  • niveau formation c’est pas optimal non plus, ça devient une boite noire et on court le risque que la connaissance de ces configs disparaisse
  • est-ce que c’est vraiment plus commode que la bootstrap doc ou que la config de la joconde ? Faire un copier coller ça va vite et on peut choper ce qu’on veut derrière. Ici il faudrait savoir si la config dans les enablers est consultée fréquemment aujourd'hui et si c'est pas le cas est-ce qu'avoir un package publié la rendrait plus populaire.
  • La config a beaucoup bougé au début des enablers mais dans le futur est-ce que ça a vocation a beaucoup évoluer ? Pas sûr du tout, auquel cas un brave cp depuis les enablers ferait le taf

Ces inconvénients sont modérés par le fait qu’on pourrait toujours cp le code du package publié pour garder les avantages qu’on avait avant en terme de flexibilité et de lisibilité (même si on pourrait galérer pendant des mois avant de prendre l'action de faire un cp plutôt qu'utiliser la lib)

Je ne suis pas moi-même convaincu que ça soit une bonne idée mais je ne suis pas non plus convaincu que ça soit une mauvaise idée donc chaud pour vos retours

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions