Skip to content

FSHSP-125 Storybook embarqué : le projet consommateur a sa propre doc - #45

Merged
LBU4SH merged 4 commits into
mainfrom
feat/fshsp-125-schematics-storybook
Aug 18, 2026
Merged

FSHSP-125 Storybook embarqué : le projet consommateur a sa propre doc#45
LBU4SH merged 4 commits into
mainfrom
feat/fshsp-125-schematics-storybook

Conversation

@LBU4SH

@LBU4SH LBU4SH commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Un projet en sources copiées possédait son code mais aucune doc : il lui restait un Storybook hébergé qui décrit nos composants, pas ses copies éditées. ng add @4sh/ui-kit-schematics --with-storybook lui donne le sien.

ng add @4sh/ui-kit-schematics --with-storybook
npm run storybook

Ce qui est posé

  • La doc de chaque composant : story et MDX, à côté de ses sources.
  • La configuration Storybook : storybook/ (main, preview, thème du manager, sélecteur de marque, pages Foundations / Spécifications / Configuration), cibles angular.json, devDependencies, scripts npm.
  • La chaîne qui alimente la doc : scripts/docs.config.mjs et le bloc <ConfigTable>.

Deux choses font que cette doc appartient au projet. Les tables Theming sont lues sur ses propres .scss au build : elles décrivent ses valeurs, rebranding compris. Et les globs couvrent tout src/app/shared/components/** — une story écrite à côté d'un composant maison apparaît sans toucher à la configuration.

Désactivé par défaut : sans Storybook, story et MDX sont deux fichiers qui importent des packages absents. Le choix est retenu dans ui-kit.json, et update s'y tient.

Décisions

  • Liens Figma retirés à la copie (48 stories) : le consommateur n'a pas accès à notre fichier, l'onglet Design n'ouvrirait qu'une porte fermée.
  • Pages transverses limitées à Foundations, Spécifications et Configuration. Introduction, NpmPackage et Overview parlent du kit lui-même et restent ici.
  • Compodoc inclus : une devDependency, le builder le pilote lui-même, et sans lui l'onglet API s'affiche sans description.
  • --components retiré de ng add : le prompt qui s'ouvre deux secondes plus tard fait le même travail à la barre d'espace, et c'était le seul chemin cassé de la commande (le CLI transmettait une chaîne là où le schéma attend un tableau). L'option reste sur ng generate …:add, pour l'usage scripté.

Quatre pièges levés en montant un vrai projet

Aucun n'était visible sur un arbre virtuel :

  1. Le CLI reformate à Prettier ce qu'un schematic écrit : {/* … */} en ressort en {/_ … _/}, MDX invalide, et l'indexeur Storybook refusait les 53 pages. L'en-tête de traçabilité passe par un export const.
  2. @storybook/angular réclame des peers qu'un projet Angular moderne n'a plus (build-angular, platform-browser-dynamic, animations) : sans elles au package.json, npm résout un majeur antérieur et l'install échoue. animations est le plus retors — le build passe, et c'est au premier rendu que tout s'arrête.
  3. Le builder Storybook exige output sur les assets du browserTarget, que ng new n'écrit plus.
  4. Colors.mdx importe tokens.manifest.json : chemins du monorepo réadressés, et tokens:build chaîné avant le build plutôt que laissé au postinstall.

Vérification

ng new sur Angular 22, puis un seul ng add --with-storybook --all, puis npm run build-storybook : build réussi, 579 stories et 64 pages indexées. Rendu contrôlé dans le navigateur — la story s'affiche, l'onglet API est renseigné par Compodoc, la table Theming résout ses valeurs sur les SCSS du projet (44px, 16px), la page Colors lit le manifeste de tokens du projet.

Reste à trancher (hors périmètre)

  • Les extraits de code de ui-icon.mdx importent @4sh/ui-kit, un package que le consommateur n'a pas : c'est de la prose à reprendre côté kit, pas un import à résoudre.
  • Le lien vers le Storybook hébergé dans les README du compagnon n'a plus lieu d'être une fois la doc locale en place.

🤖 Generated with Claude Code

LBU4SH and others added 4 commits August 17, 2026 18:18
Un projet en sources copiées possédait son code mais aucune doc : il lui
restait un Storybook hébergé qui décrit nos composants, pas ses copies
éditées. `--with-storybook` pose désormais, à côté de chaque composant, sa
story et sa page MDX, plus la chaîne qui les alimente — `docs.config.mjs` et
le bloc `<ConfigTable>` — pour que les tables « Theming » lisent les `.scss`
du projet et décrivent ses valeurs.

Les imports suivent les copies, comme pour les sources. Le MDX passe par une
réécriture propre : elle ignore les blocs de code, qui sont des exemples
destinés au lecteur et non des imports à résoudre — les réécrire produirait
des chemins relatifs faux, dépendants d'un fichier que nous ne connaissons
pas. `docs.config.mjs` est copié tel quel et reconnaît seul sa disposition,
monorepo ou projet consommateur : un seul script à maintenir.

Désactivé par défaut, parce que sans Storybook installé ce sont des fichiers
qui importent des packages absents. Le choix est retenu dans `ui-kit.json`,
d'où `update` le relit — sans quoi une mise à jour poserait de la doc chez
qui n'en veut pas. La configuration Storybook elle-même reste à poser.

Vérifié sur un arbre consommateur complet : 53 composants copiés, 53 MDX
compilés par le loader de Storybook, 55 composants relevés par la chaîne de
doc, aucun import du kit résiduel.
…mer project

La phase 1 posait la doc des composants sans de quoi la lire. `ng add
--with-storybook` écrit maintenant la configuration : `storybook/` (main,
preview, thème du manager, sélecteur de marque, pages Foundations,
Spécifications et Configuration), les cibles `angular.json`, les
devDependencies et les scripts npm. Un `npm run storybook` suffit ensuite.

Deux natures de fichier, deux provenances. Ce qui vaut tel quel des deux
côtés est copié depuis ce dépôt via les assets, donc reste en phase sans
recopie manuelle ; ce qui doit diverger — globs, couplages de la preview,
marque du manager, tsconfig — est un scaffold écrit pour le consommateur.
`restore-component-metadata.ts` ne part pas : il répare les annotations que
le linker retire du package compilé, et là-bas les stories visent des
sources. Le bloc `ui-image` de la preview n'est écrit que si le composant a
été copié, sinon la preview entière tomberait sur un import mort.

Les liens `parameters.design` vers notre Figma sont retirés à la copie
(décision produit) : le consommateur n'y a pas accès, l'onglet Design
n'ouvrirait qu'une porte fermée.

Quatre pièges levés en montant un vrai projet Angular 22 de zéro, tous
invisibles sur un arbre virtuel :

- le CLI reformate à Prettier ce qu'un schematic écrit, et `{/* … */}` en
  ressort en `{/_ … _/}` : l'en-tête de traçabilité des MDX passe par un
  `export const`, qui traverse ce formatage sans dommage ;
- `@storybook/angular` réclame des peers qu'un projet moderne n'a plus
  (`build-angular`, `platform-browser-dynamic`, `animations`) — sans elles
  au package.json, npm résout un majeur antérieur et l'install échoue ;
- le builder Storybook valide les assets du `browserTarget` contre son
  schéma, qui exige `output` — `ng new` ne l'écrit plus ;
- `Colors.mdx` importe `tokens.manifest.json` : les chemins du monorepo sont
  réadressés, et `tokens:build` est chaîné avant le build plutôt que laissé
  au `postinstall`.

Vérifié de bout en bout : `ng new` puis un seul `ng add --with-storybook
--all`, `npm run build-storybook` réussi, 579 stories et 64 pages indexées,
tables Theming résolues sur les SCSS du projet et API renseignée par Compodoc.
L'option faisait double emploi avec l'écran qui s'ouvre deux secondes plus
tard : la sélection s'y coche à la barre d'espace, `a` prend tout, `i`
inverse. Elle était de surcroît le seul chemin cassé de la commande — le CLI
Angular transmettait une chaîne là où le schéma attend un tableau, et `ng add
--components=ui-button` s'arrêtait sur « Data path "/components" must be
array ». Une option qui n'apporte rien et ne marche pas ne se répare pas,
elle s'enlève.

`--all` reste, pour l'installation non interactive. `--components` reste sur
`ng generate …:add`, où l'usage scripté a du sens.

Les deux README décrivent maintenant les touches du prompt, puisque c'est
désormais par là que passe une sélection partielle.
@LBU4SH
LBU4SH merged commit c52d407 into main Aug 18, 2026
2 of 3 checks passed
@LBU4SH
LBU4SH deleted the feat/fshsp-125-schematics-storybook branch August 18, 2026 07:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant