Bootstrap monorepo pnpm + migration de web-component #1

Merged
kyuno merged 2 commits from feat/monorepo-bootstrap into main 2026-09-18 11:36:45 +02:00
Owner

Résumé

  • Outillage complet : pnpm workspaces (catalog:), Biome (lint + format), TypeScript en project references (tsc -b, CommonJS/Node10 — pas d'extension .js requise dans les imports), Vitest, TypeDoc (validation bloquante en CI pour tout nouveau package), Changesets (versioning/publication indépendants par package).
  • Packages organisés en trois catégories packages/{client,common,server} (reflète la distinction Frontend/Backend du CLAUDE.md du projet).
  • Migration de @lightweight-sdk/web-component (packages/client/web-component) depuis l'ancien repo lightweight-sdk-web-component : les 6 fichiers src/*.ts sont des copies strictement identiques (téléchargées directement, aucune édition). Le package est volontairement exclu de la validation TypeDoc stricte et de quelques règles/formatage Biome puisque son code ne peut pas être modifié pour s'y conformer — détail dans spec/packages.md.
  • Workflows .forgejo/workflows/ : ci.yml (lint, build, test, docs:check sur chaque PR) et release.yml (publication sur le registre npm privé via Changesets, sur push main).
  • pnpm create-package <client|common|server> <nom> pour scaffolder les futurs packages.
  • Documentation dans /spec : architecture.md, conventions.md (traçabilité avec les règles CLAUDE.md), ci-cd.md, packages.md.
  • Un changeset initial (bump patch 0.0.2 → 0.0.3) prépare la première publication réelle du package sur le registre.

Vérifié localement

pnpm lint, pnpm build, pnpm test, pnpm docs:check passent tous (0 erreur ; 6 avertissements non bloquants attendus sur le code hérité de web-component).

Reste à faire côté Forgejo (hors périmètre de cette PR)

  • Ajouter un secret de repo REGISTRY_TOKEN (PAT write:package+read:package) pour que release.yml puisse publier.
  • Après merge : pnpm changeset version en local, PR "Version Packages" séparée, qui déclenchera la première publication.

🤖 Generated with Claude Code

## Résumé - Outillage complet : pnpm workspaces (`catalog:`), Biome (lint + format), TypeScript en project references (`tsc -b`, CommonJS/Node10 — pas d'extension `.js` requise dans les imports), Vitest, TypeDoc (validation bloquante en CI pour tout nouveau package), Changesets (versioning/publication indépendants par package). - Packages organisés en trois catégories `packages/{client,common,server}` (reflète la distinction Frontend/Backend du CLAUDE.md du projet). - Migration de `@lightweight-sdk/web-component` (`packages/client/web-component`) depuis l'ancien repo `lightweight-sdk-web-component` : les 6 fichiers `src/*.ts` sont des copies **strictement identiques** (téléchargées directement, aucune édition). Le package est volontairement exclu de la validation TypeDoc stricte et de quelques règles/formatage Biome puisque son code ne peut pas être modifié pour s'y conformer — détail dans [`spec/packages.md`](spec/packages.md). - Workflows `.forgejo/workflows/` : `ci.yml` (lint, build, test, docs:check sur chaque PR) et `release.yml` (publication sur le registre npm privé via Changesets, sur push `main`). - `pnpm create-package <client|common|server> <nom>` pour scaffolder les futurs packages. - Documentation dans `/spec` : `architecture.md`, `conventions.md` (traçabilité avec les règles CLAUDE.md), `ci-cd.md`, `packages.md`. - Un changeset initial (bump patch `0.0.2 → 0.0.3`) prépare la première publication réelle du package sur le registre. ## Vérifié localement `pnpm lint`, `pnpm build`, `pnpm test`, `pnpm docs:check` passent tous (0 erreur ; 6 avertissements non bloquants attendus sur le code hérité de `web-component`). ## Reste à faire côté Forgejo (hors périmètre de cette PR) - Ajouter un secret de repo `REGISTRY_TOKEN` (PAT `write:package`+`read:package`) pour que `release.yml` puisse publier. - Après merge : `pnpm changeset version` en local, PR "Version Packages" séparée, qui déclenchera la première publication. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
kyuno added 1 commit 2026-09-18 07:11:04 +02:00
Bootstrap monorepo pnpm + migration de web-component
Some checks failed
CI / build-lint-test (push) Failing after 1m53s
CI / build-lint-test (pull_request) Successful in 1m58s
e2d7207237
- Outillage complet : pnpm workspaces (catalog), Biome, TypeScript
  (project references, CommonJS/Node10), Vitest, TypeDoc (validation
  bloquante en CI), Changesets.
- Organisation des packages en catégories client/common/server.
- Migration de @lightweight-sdk/web-component (packages/client/) depuis
  l'ancien repo lightweight-sdk-web-component : code source copié à
  l'identique, aucune modification. package.json/tsconfig.json/README.md
  adaptés autour. Exclu de la validation TypeDoc stricte et de quelques
  règles Biome (formatage, noShadowRestrictedNames) puisque le code ne
  peut pas être édité pour s'y conformer - détails dans spec/packages.md.
- Workflows Forgejo Actions (.forgejo/workflows/) : ci.yml (lint, build,
  test, docs:check) et release.yml (publication sur le registre npm
  privé via Changesets).
- Script pnpm create-package <client|common|server> <nom> pour scaffolder
  les futurs packages.
- Documentation dans /spec (architecture, conventions, ci-cd, packages).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kyuno added 1 commit 2026-09-18 08:47:54 +02:00
Simplifier le trigger de ci.yml (pull_request uniquement)
All checks were successful
CI / build-lint-test (pull_request) Successful in 44s
7a77534d36
Le trigger push sur les branches non-main faisait tourner ci.yml deux
fois sur le meme commit des qu'une PR est ouverte (une fois pour le
push, une fois pour la pull_request) : deux statuts distincts pour un
seul resultat logique, et une exposition doublee aux flakys du runner
(observe : Setup pnpm a echoue une fois avec l'erreur text file busy,
une race condition transitoire juste apres l'installation de Node par
le runner - le run pull_request sur le meme commit avait reussi).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kyuno merged commit cb8fbb4b3b into main 2026-09-18 11:36:45 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: kyuno/lightweight-sdk#1
No description provided.