Aller au contenu

Migrer depuis Decap ou Sveltia

Decap et Sveltia stockent le contenu en fichiers markdown dans votre dépôt et l’éditent à travers un config.yml. Menestrel remplace ce couple par une API et une admin, pendant que votre site reste 100 % statique. La migration est mécanique : vos collections se traduisent en cms.config.ts, vos fichiers s’importent avec menestrel import, vos composants continuent de fonctionner à travers le loader.

Ce guide vient d’une migration réelle : un site vitrine de cinq singletons et 23 images, mené de bout en bout en moins d’une demi-heure.

  1. Connectez le site

    Terminal window
    npx create-menestrel@latest # ou, dans un site existant :
    npx menestrel init

    init détecte Astro, écrit votre token dans .env, crée un cms.config.ts de départ et branche content.config.ts sur le loader Menestrel.

  2. Traduisez config.yml en cms.config.ts

    Chaque collection Decap/Sveltia devient une collection() (ou un singleton() pour les collections files:) ; chaque widget correspond à un builder :

    widget config.yml cms.config.ts
    string fields.text()
    text fields.textarea()
    markdown fields.richtext()
    number fields.number()
    boolean fields.boolean()
    select fields.select({ options })
    datetime fields.date() ou fields.datetime()
    image fields.image()
    list fields.repeater({ fields })
    object fields.group({ fields })
    relation fields.relation({ to })

    Puis poussez le schéma : menestrel sync (le diff s’affiche avant application).

  3. Importez le contenu

    Terminal window
    menestrel import --dry-run # scanne et mappe, n'écrit rien
    menestrel import # entrées, puis images, puis publication

    L’import lit le frontmatter et le corps de vos markdown, envoie les images référencées, attend leur traitement et publie. Les fichiers localisés (title.fr, fichiers suffixés) arrivent en locales par champ.

  4. Basculez le rendu

    Vos templates lisent déjà getCollection() : ils continuent exactement pareil, à travers le loader Menestrel. Remplacez les <img> directs de fichiers du dépôt par <CmsImage /> et le rendu markdown par <RichText />, puis :

    Terminal window
    menestrel pull && npm run build
  5. Nettoyez

    Supprimez public/admin/, config.yml et le backend git-gateway. Vos éditeurs se connectent désormais à votre admin Menestrel ; le dépôt cesse de recevoir des commits de contenu.