Introduction
VueDsfr est un portage du Système de design français en Vue 3 sous forme de bibliothèque de composants.
Le code est ouvert et disponible sur GitHub.
Pourquoi VueDsfr ?
Le Bureau des ressources et réalisations (BRR) a choisi sa stack technique pour le front, et elle inclut Vue 3. Le Système de design français (DSFR) est développé en JavaScript natif et en SCSS (SASS).
Le BRR a donc besoin d'un portage en Vue 3 de ce DSFR pour ses futurs projets qui devront le respecter.
VueDsfr en quelques mots
Ce projet de bibliothèque de composants :
- reproduit le plus fidèlement possible les composants du DSFR ;
- est fait avec Vue 3 ;
- est utilisable facilement en tant que plugin Vue 3 ou Nuxt 3 ;
- exporte les types (TypeScript) du plugin, des composants et des composables ;
- est utilisable facilement dans un projet npm ;
- met à disposition deux parties dans la documentation :
- une pour aider au développement ;
- une autre pour l'utilisation ;
- publie une documentation disponible pour tous avec les composants et leurs variants et des exemples ;
- publie un storybook disponible pour tous avec les composants et leurs variants testables dans celui-ci dans un storybook ;
- a une couverture de test optimale ;
- met à disposition les composants individuellement sans avoir à importer toute la bibliothèque (recommandé).
Les choix techniques retenus
Cadriciels de travail
La bibliothèque est faite avec Vue 3 et Vue-router 4.
La bibliothèque est mise en paquet grâce à Vite en mode bibliothèque.
Le CSS est transpilé avec LightningCSS (mais très peu de CSS est propre à la bibliothèque).
Le JavaScript est "linté" avec ESLint et configuré grossièrement selon StandardJS, avec tous les ajouts de @antfu/eslint-config.
Environnements
Le serveur de développement est historiquement celui de Storybook et le site pour tester les composants est le storybook lui-même (npm run dev
).
Cependant il est tout à fait possible d’utiliser le serveur qui génère cette documentation (npm run docs:dev
).
Tests
Les tests sont faits avec Vitest et Vue Testing Library, et des tests d’accessibilité sont faits avec Cypress grâce aux tests de composants, ainsi qu’avec Storybook pour certains composants (notamment pour tous les tests de la touche tabulation, comme la modale et les onglets).
Ressources
Les icônes sont toujours celles de RemixIcon, grâce au DSFR et parfois grâce à @iconify/vue
(qui permet d’ajouter d’autres icônes).
Les acteurs du projet
- Stanislas Ormières (Lead dev, architecte, devops, mainteneur principal).
- Clément Debroize ;
- Pierre-Louis Egaud ;
Le projet a pu bénéficier des retours et de contributions de :
- Sophie Aitis ;
- Alexandre Cailliaud ;
- Gildéric Deruette ;
- Vincent Lainé ;
- Ambroise Maupate ;
- Adrien Martinez.
Merci à vous !