Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Taille du paquet NPM #6

Open
mquandalle opened this issue Nov 6, 2024 · 9 comments
Open

Taille du paquet NPM #6

mquandalle opened this issue Nov 6, 2024 · 9 comments
Assignees
Labels
🏗️ infra Lié à la compilation, mise en paquet, CI, etc...

Comments

@mquandalle
Copy link
Collaborator

mquandalle commented Nov 6, 2024

Ce nouveau paquet est bien plus lourd que l'ancien :

Paquet Taille
https://www.npmjs.com/package/@betagouv/aides-velo 14.3 MB
https://www.npmjs.com/package/aides-velo 597 kB

Est-ce normal ? Alors même que dans le paquet aides-velo le code était dupliqué pour ESM / CJS (et je pense qu'on n'a plus besoin de publier en CJS aujourd'hui)

@EmileRolley
Copy link
Collaborator

En effet c'est un sujet à traiter. Cela vient du fait que le paquet expose l'ancien fichier communes.json qui fait plus de 6 MB et qu'il est dupliqué pour ESM/CJS..

@EmileRolley
Copy link
Collaborator

Pourquoi considère tu qu'il n'est plus nécessaire de publier en CJS ? Car j'ai eu des problèmes avec l'utilisation du paquet côté J'agis à ce propos et il me semble que c'est bien la version CJS qui est utilisée avec nestjs..

@EmileRolley EmileRolley self-assigned this Nov 7, 2024
@EmileRolley EmileRolley added the 🏗️ infra Lié à la compilation, mise en paquet, CI, etc... label Nov 7, 2024
@mquandalle
Copy link
Collaborator Author

Je sais que j'avais eu besoin de la version CJS à l'époque pour aides-jeunes qui était sur une ancienne version de webpack, je ne sais pas si c'est encore utile aujourd'hui. Normalement les bundlers modernes savent importer un module ESM.

Dans le principe c'est moins de complexité de publier juste l'ESM plutôt que 2 versions CJS et ESM. Normalement il ne devrait même plus y avoir besoin d'étape de build pour le js (juste le compile de publicodes). Un réutilisateur pourra même modifier facilement le code à la main directement dans son node-modules pour tester des changements.

@EmileRolley
Copy link
Collaborator

EmileRolley commented Nov 7, 2024

Il y a aussi un doublon lié au fait que le modèle compilé avec publicodes compile dans publicodes-build est inliné dans les fichier JS compilé mais il reste nécessaire de l'exposer afin de pouvoir utiliser le système d'import.

En supprimant communes.json du paquet on passe à 1MB, c'est déjà plus acceptable. Se pose également la question de si on souhaite garder aide-collectivities.json 🤔

@mquandalle
Copy link
Collaborator Author

Ah oui un peu dommage d'avoir les aides en double, à la fois dans un fichier dédié et dans une version inlinée. C'est tentant de supprimer complètement l'étape de build et publier les sources ESM telles quelles, avec seulement l'étape publicodes compile.

@EmileRolley
Copy link
Collaborator

Ah oui un peu dommage d'avoir les aides en double, à la fois dans un fichier dédié et dans une version inlinée. C'est tentant de supprimer complètement l'étape de build et publier les sources ESM telles quelles, avec seulement l'étape publicodes compile.

Oui après c'est pas le plus lourd non plus. Je vais regarder s'il y a pas moyen d'avoir un import des règles depuis publicodes-build plutôt que de le bundle, au moins pour la version ESM.

@EmileRolley
Copy link
Collaborator

En supprimant le fichier communes.json du build et simplifiant les données utilisées avec #7 et #9, on atteint à présent une taille de 1.2 MB. Il faudrait à présent régler le problème du doublon des règles, même si pour l'instant je ne pense pas que ce soit un problème car seules celles utilisées devraient être bundlé dans les apps l'utilisant donc c'est simplement un surplus au moment d'installer les dépendances.

@mquandalle
Copy link
Collaborator Author

Pour moi le plus simple c'est de supprimer tsup et de publier les fichiers sources sur NPM avec le publicodes transformé

@EmileRolley
Copy link
Collaborator

En compilant le TS avec tsc ? Il risque pas d'y avoir un soucis de compatibilité avec les projets node en commonjs ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🏗️ infra Lié à la compilation, mise en paquet, CI, etc...
Projects
None yet
Development

No branches or pull requests

2 participants