Étape 1 – Le décor : un Storybook, un Angular, un objectif

Imaginez une boîte à outils visuelle pour vos composants Angular : vous ouvrez une page web, et là, tous vos boutons, champs, menus apparaissent, joliment rangés, testables, commentés, prêts à l'emploi. C’est ça, Storybook.

Ce projet est basé sur Angular 18 et il a pour but de centraliser des composants UI que vous pouvez voir, tester, documenter et réutiliser, sans vous arracher les cheveux à chaque nouveau projet.

Étape 2 – Avant de se lancer, on prépare le terrain

Avant d’écrire une ligne de code, voici ce qu’il vous faut :

  • Node.js v20 ou plus

  • npm (le gestionnaire de paquets)

  • Angular CLI v18

  • Sass (pour les styles qui ont du style)

Installez tout ça. Prenez un café. On passe aux choses sérieuses.

Étape 3 – Clone, install, enjoy

Dans votre terminal :

git clone <repository-name>
cd <repository-name>
<npm install>

Puis si ce n’est pas déjà fait :

<npm install sass --save-dev>

Par défaut, le projet s’appelle common-controls-lib. Mais rien ne vous empêche de lui donner un nom plus stylé (genre awesome-ui-kit). Attention : si vous changez le nom, pensez à le mettre à jour dans les fichiers comme angular.json et les chemins de projects/.

Étape 4 – Démarrez Storybook (et ouvrez vos yeux)

La magie commence ici :

<npm run storybook>

Une belle interface s’ouvre dans votre navigateur pour prendre des patterns UI. C’est votre showroom de composants. Cliquez, testez, explorez.

Étape 5 – L’accessibilité, ce n’est pas optionnel

Vous voulez que vos composants soient utilisables avec un lecteur d’écran, au clavier, et conformes aux standards ? Ajoutez l’addon a11y de Storybook :

<npm install @storybook/addon-a11y --save-dev>

Puis, dans main.ts :

module.exports = {
  stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
  addons: ['@storybook/addon-a11y'],
};

Et voilà : Storybook vous alertera si un bouton manque d’un label ARIA ou si votre contraste est douteux.

Étape 6 – Le bouton, ce héros du quotidien

Premier composant star de la bibliothèque : le bouton.

Pourquoi lui ? Parce qu’il est partout, tout le temps. Et mal fait, il peut ruiner toute une interface.

Ce qu’il sait faire :

  • Trois variantes : primary, secondary, text

  • Peut afficher une icône (gauche ou droite, comme vous voulez)

  • Gère l’état disabled, le focus clavier, les labels ARIA…

Testé et validé :

  • Branché dans une appli Angular réelle

  • Comportements testés (clic, focus, accessibilité)

  • Comparé à d’anciens composants pour s’assurer qu’il est isofonctionnel

Étape 7 – Créer votre bibliothèque Angular

Envie d’emballer vos composants comme une vraie lib pro ? Voici comment :

<ng generate library nom-de-la-bibliotheque>

Vous obtenez :

<projects/
└── < nom-de-la-bibliothèque >/
    ├── src/
    │   └── lib/
    │       ├── nom-de-la-bibliotheque.component.ts
    │       ├── nom-de-la-bibliotheque.service.ts
    │       └── public-api.ts
    ├── ng-package.json
    └── package.json>

Ensuite, copiez vos composants dans common-controls, mettez à jour le public-api.ts :

</*
 * Public API Surface of common-controls-lib
 */

export * from './lib/common-controls/button/button.module';
export * from './lib/common-controls/button/button.component';>

Et précisez le fichier d’entrée dans ng-package.json :

"lib": {
  "entryFile": "index.ts"
}

Étape 8 – Build et packaging : on emballe le tout

Prêt à générer un package installable dans d’autres projets ?

<npm run build:lib>

Angular va compiler tout ça dans dist/nom-de-la-bibliotheque/.

Puis, créez l’archive :

<cd dist/nom-de-la-bibliotheque>
<npm pack>

Vous verrez apparaître un joli .tgz prêt à être importé ailleurs.

Étape 9 – Réutiliser la bibliothèque dans un autre projet

Dans votre projet cible :

<npm install ../chemin/vers/nom-de-la-bibliotheque-1.0.0.tgz>

Et dans app.module.ts :

import { ButtonModule } from 'nom-de-la-bibliotheque';

@NgModule({
  imports: [ButtonModule],
})
export class AppModule {}

Et voilà, votre composant bouton est prêt à servir dans un nouveau projet.

Étape 10 – Structure finale (ou comment rester organisé)

En résumé, votre projet ressemblera à ça :

<storybook/
├── src/
│   └── lib/
│       └── common-controls/
│           └── button/
├── projects/
│   └── nom-de-la-bibliothèque/
│       └── src/lib/common-controls/
│           └── button/
└── dist/
    └── nom-de-la-bibliothèque/
        └── .tgz generé>

Claire, modulaire, documentée, accessible. On ne fait pas mieux.

En conclusion

Créer un design system propre, testable et accessible avec Angular + Storybook, c’est non seulement faisable, mais hautement recommandé. Vous gagnez du temps, de la cohérence, et vous offrez une meilleure expérience aux utilisateurs. Et avec cette structure, vous êtes prêt à scaler vos projets sans tout casser.

→ En savoir plus
0 vues · 0 J’aime