Aller au contenu

Migrer depuis l'ancienne structure multi-dépôts

En juin 2026, Silex est passé d'un méta-dépôt d'environ 25 sous-modules git (sous packages/*) à un monorepo unique. L'historique git complet et la paternité (authorship) de chaque contributeur ont été préservés.

Ce guide s'adresse aux contributeurs qui avaient un clone local, une branche ou une pull request avant la bascule. Si vous partez de zéro, rien de tout ceci ne vous concerne — suivez simplement la configuration de développement, vous êtes déjà sur la nouvelle structure.

Ce qui a changé

  • L'application Silex est désormais un seul package (un package.json, un seul build). Le code est réparti par rôle : editor/, server/, common/, grapesjs-plugins/, server-rust/, desktop/. Les anciens sous-modules packages/<sous-projet>/ ont disparu.
  • La branche par défaut main a été repointée vers l'historique du monorepo. L'ancien main du méta-dépôt est conservé sous la branche legacy-main et le tag pre-monorepo — rien n'est perdu.
  • Comme main porte maintenant un historique sans ancêtre commun, un simple git pull sur un ancien clone tenterait de fusionner deux historiques disjoints. Ne faites pas ça — suivez les étapes ci-dessous.

Mettre à jour votre clone local

Option A — Clone neuf (le plus simple)

git clone https://github.com/silexlabs/Silex.git
cd Silex
pnpm install
pnpm build && pnpm start   # éditeur sur http://localhost:6805

Les sous-modules dashboard ne sont nécessaires que pour faire tourner le SaaS multi-sites complet, pas pour développer l'éditeur. Si vous les voulez : git submodule update --init.

Option B — Mettre à jour votre clone existant

git fetch origin --prune
git switch main
git reset --hard origin/main   # l'ancien main est conservé sur origin sous 'legacy-main' / tag 'pre-monorepo'
rm -rf node_modules
pnpm install                   # la toolchain est désormais pnpm

Si vous aviez une branche ou une pull request en cours

Votre branche repose sur l'ancienne arborescence packages/<sous-projet>/…, qui ne correspond pas un-pour-un aux nouveaux chemins. Ne faites pas de rebase ni de cherry-pick à travers la réorganisation — réappliquez plutôt votre changement sous forme de patch sur la nouvelle structure :

git diff legacy-main...ma-feature > mon-changement.patch   # exportez votre travail en diff
git switch main && git switch -c ma-feature-monorepo
git apply --reject mon-changement.patch                    # corrigez les chemins, résolvez les .rej

Pour de petits changements, il est souvent plus rapide de refaire l'édition à la main sur la nouvelle structure. Ouvrez votre PR sur main — on vous aide volontiers à porter votre travail, demandez sur le chat.

Où sont passés les anciens dépôts

  • Ancien main du méta-dépôt → branche legacy-main + tag pre-monorepo (référence en lecture seule).
  • Sous-dépôts par package (silex-lib, grapesjs-*, …) → consolidés dans le monorepo. Les dépôts autonomes restent en ligne pendant la transition et seront archivés en lecture seule plus tard ; tout le nouveau travail se fait dans le monorepo.

Pourquoi un monorepo

Consolider Silex en un monorepo unique est une étape de la sortie des plateformes propriétaires (GitHub, npm) vers une infrastructure libre — qui fait partie des travaux financés par NLnet (NGI0 Commons Fund, projet 2025-10-133).

Éditer cette page sur GitLab