InseeFr / Lunatic

Library of questionnaire components
https://inseefr.github.io/Lunatic/
MIT License
20 stars 21 forks source link

build!: ESModule exports for Vite/Rollup users #904

Closed MaxenceGazeau closed 5 months ago

MaxenceGazeau commented 6 months ago

Rollup et Vite (qui utilise Rollup) ne savent pas bien construire le livrable quand une dépendance en CommonJS importe elle-même une dépendance en ESModule (issue GitHub sur le sujet). C'est le cas de Lunatic qui est livré en CommonJS mais qui utilise ANTLR4 qui est exporté en ESModule. Dans mon cas, l'application plante après livraison, et pendant les tests.

Dans ce genre de cas, il y a 3 solutions :

Cette dernière solution est celle effectué par cette Pull Request (voir .babelrc). Ca a cassé une regex avec capture nommé dans le fichier page-tag.ts pour une raison que j'ignore. J'ai remplacé le code par du code que je crois équivalent. Le yarn.lock n'est peut-être pas à jour.

N'hésitez pas si vous voulez plus d'information, et merci d'avance pour votre temps.

ddecrulle commented 6 months ago

Que penses tu de l'option de ne plus utiliser babel et de livrer lunatic en ESM (non packagé) ?

MaxenceGazeau commented 6 months ago

Comme tu veux, les deux me vont.

ddecrulle commented 6 months ago

Tu peux me dire si tu rencontres le même souci avec la version (pas stable encore) 3.0.0-rc.12 ?

MaxenceGazeau commented 6 months ago

Salut ! Désolé pour l'attente, Ca ne plante plus, mais j'ai des erreurs de typage et de style :

Avec ma pull request : image

Avec ta branche 3.0.0-rc.12 : image

On utilise la version la plus récente de la 2.7, j'imagine que tu as fais le changement à partir d'une version plus récente non publié (3.0.0 ?), d'où les changements de style et typage ?

ddecrulle commented 6 months ago

Oui c'est normal comme je te disais c'est une version qui n'est pas encore stable. C'est une majeur qui contient des breaking change, notamment sur le style qui n'est plus fourni par défaut, le client doit l'importer explicitement. Il y a également eu d'autres changements qui peuvent expliquer tes erreurs de typage. On a prévu de documenter tous ça avant de release. J'espère qu'on pourra release une v3 dans le mois d'avril, on peut faire ce même changement dans la 2.7 si tu en as besoin.

MaxenceGazeau commented 6 months ago

D'accord, En effet, je veux bien que tu répercutes sur la 2.7. Merci !

ddecrulle commented 6 months ago

On a regardé pour mettre ça aussi sur la 2.7 mais ce n'est pas possible car cela implique un Breaking Change. En effet, la lib ne sera plus disponible en CommonJS, par ailleurs le fait de livrer seulement en ESM implique de devoir gérer manuellement les assets en les copiant dans le livrable. On peut discuter sur tchap des solutions que l'on peut te proposer ?