GouvernementFR / dsfr

🇫🇷 Official french government's design system (Système de Design de l'État)
https://www.systeme-de-design.gouv.fr/
Other
243 stars 54 forks source link

Ajout d'une clef main et style dans le package.json #985

Open WebMamba opened 2 months ago

WebMamba commented 2 months ago

Bonjour 👋, Je suis développeur Symfony. Pour la gestion de mes assets je n'utilises pas de packages manager, mais les importmap via le composant AssetMapper de Symfony. Lorsque l'on utilise les importmap plutôt que des packages manager comme yarn, on passe par des gestionnaire de CDN, comme: https://www.jsdelivr.com/package/npm/@gouvfr/dsfr. Comme vous pouvez le voir le package est bien référencer sur jsdelivery. Le soucis est qu'il manque des informations dans le packages.json, pour permettre de parser correctement le packages et de comprendre les fichier important à extraire. Les information manquantes dans le packages json sont:

{
    main: 'dist/dsfr.module.min.js',
    module: 'dist/dsfr.module.min.esm.js',
    style: 'dist/dsfr.min.css'
}

Cette convention est suivis par les framework css/js: https://github.com/twbs/bootstrap/blob/e3e00b5002139adb0d5dadd6002e15b7b6cd371f/package.json#L37 https://github.com/Dogfalo/materialize/blob/824e78248b3de81e383445e76ffb04cc3264fe7d/package.json#L7

Il faudrait aussi exposer les dist sur le github, donc avoir un dossier dist Ă  la racine comme boostrap.

Je rappelle que ce problème n'est pas propre à Symfony, les importmaps font aujourd'hui partis des standard du web, et sont natifs à tous les navigateurs modern. Merci de votre attention et si besoin je reste disponible pour une éventuelle PR.

keryanS commented 1 month ago

Bonjour @WebMamba,

En l'occurence il faudrait ajouter ceci ?

main: 'dist/dsfr.nomodule.min.js',
module: 'dist/dsfr.module.min.js',
style: 'dist/dsfr.min.css'

Concernant les dist sur le github cela engendrerai des conflits récurrents lors des commits, à moins de les générer via des github actions ? je ne connais pas la façon de faire de bootstrap et autre.

Keryan, pour l'Ă©quipe du DSFR

WebMamba commented 1 month ago

Non vous n'êtes pas obliger de générer via des github actions, je suis un des mainteneur de Symfony UX, on demande juste au contributeur de build leur PR, et de commit le build. https://github.com/symfony/ux/pull/2040/files#diff-75f245e34bb4f6e23ebae9cab5ceeb9e451c8ec5d9e655e2b8412c02ce6caf64

sblum51 commented 1 month ago

Merci pour le DSFR,

+1 pour la suggestion d'amélioration : pour le moment on installe le DSFR en plusieurs fois à coup d'importmap:require mais certains assets ne sont pas récupérés.

Merci !

keryanS commented 1 month ago

Non vous n'êtes pas obliger de générer via des github actions, je suis un des mainteneur de Symfony UX, on demande juste au contributeur de build leur PR, et de commit le build. https://github.com/symfony/ux/pull/2040/files#diff-75f245e34bb4f6e23ebae9cab5ceeb9e451c8ec5d9e655e2b8412c02ce6caf64

Je comprends l'idée, mais j'ai l'impression que cela engendrerai sans cesses des conflits, et rajouterai du "bruit" sur chacun des commits. Une simple modification d'une ligne dans le SCSS du composant button engendrerait des file-changes sur : button.css, button.min.css, button.main.css, button.main.min.css, component.css, component.min.css, component.main.css, component.main.min.css, dsfr.css, dsfr.min.css, dsfr.main.css, dsfr.main.min.css

Les utilisateurs ayant besoin des dist, peuvent télécharger la release github ou passer par npm. Et s'ils décident de cloner le projet, il leur suffira alors de lancer le build.

J'ai créé une PR concernant les clés module/style du package.json. Mais nous conseillons tout de même d'importer unitairement les composants que vous utilisez, plutot que d'importer dsfr.css et dsfr.js en entier, afin de minimiser le poids.