Astro 6.4 : Processeur Markdown Rust Sätteri et Temps de Build Réduits

Astro 6.4 : Processeur Markdown Rust Sätteri et Temps de Build Réduits

lschvn

Astro 6.4 est arrivé le 28 mai avec une fonctionnalité majeure qui compte pour tout site à fort contenu : un processeur markdown optionnel basé sur Rust appelé Sätteri, conçu pour remplacer l'écosystème unified sur les sites contenant des centaines ou des milliers de fichiers Markdown.

TLDR

  • La nouvelle option de configuration markdown.processor permet de remplacer le pipeline markdown d'Astro
  • @astrojs/markdown-satteri est un processeur basé sur Rust qui accélère drastiquement les builds pour les sites à fort contenu markdown
  • La structure du répertoire serveur est désormais préservée indépendamment via preserveBuildServerDir
  • Les routes SSR on-demand passent maintenant correctement au handler suivant quand une route pré-rendue correspond mais ne peut servir la requête

Le Problème : Unified Est Lent à Grande Échelle

Le pipeline markdown d'Astro a toujours utilisé l'écosystème unified — plugins remark et rehype — qui est puissant mais notoirement lent à grande échelle. Les sites avec de nombreux fichiers Markdown ou MDX finissent avec des temps de build de plusieurs minutes car le processeur unified analyse et transforme le contenu séquentiellement.

Astro 6.4 introduit markdown.processor comme nouvelle option de configuration de haut niveau qui remplace les champs existants remarkPlugins et rehypePlugins :

// astro.config.mjs
import { defineConfig } from 'astro/config';
import { unified } from '@astrojs/markdown-remark';
import remarkToc from 'remark-toc';

export default defineConfig({
  markdown: {
    processor: unified({
      remarkPlugins: [remarkToc],
    }),
  },
});

Les configurations existantes utilisant remarkPlugins, rehypePlugins, gfm et smartypants fonctionnent toujours — elles sont désormais dépréciées et seront supprimées dans une future version majeure.


Sätteri : L'Alternative Rust

En parallèle de la nouvelle option de configuration, Astro livre @astrojs/markdown-satteri, un processeur alimenté par la bibliothèque Rust Sätteri :

// astro.config.mjs
import { defineConfig } from 'astro/config';
import { satteri } from '@astrojs/markdown-satteri';

export default defineConfig({
  markdown: {
    processor: satteri({
      features: { directive: true },
    }),
  },
});

Sätteri est écrit en Rust et exclut délibérément l'écosystème de plugins remark/rehype. À la place, il supporte nativement les plugins MDAST et HAST — les plugins existants doivent être réécrits pour fonctionner avec le nouveau processeur, mais le gain en rapidité d'analyse est significatif à grande échelle.

Les sites avec des milliers de fichiers markdown devraient voir les améliorations les plus spectaculaires. L'équipe Astro cite le projet Sätteri directement sur satteri.bruits.org.


Préservation Indépendante du Répertoire Serveur

Astro 6.4 ajoute preserveBuildServerDir aux features de l'adapter API. Cela reflète l'option existante preserveBuildClientDir mais pour le répertoire de sortie serveur :

setAdapter({
  name: 'my-adapter',
  adapterFeatures: {
    buildOutput,
    preserveBuildClientDir: true,
    preserveBuildServerDir: true,
  },
});

Auparavant, préserver le répertoire client affectait automatiquement la structure du répertoire serveur. Maintenant les adapters peuvent conserver une disposition cohérente dist/client/ et dist/server/ indépendamment.


Correctif de Fallthrough SSR

Un cas limite de longue date dans le rendu on-demand d'Astro est désormais corrigé. Quand une route dynamique pré-rendue et une route dynamique SSR partageaient le même pattern d'URL, les requêtes vers des chemins non pré-rendus retournaient 404 au lieu de passer au handler SSR. La correction ajoute une logique de fallthrough : quand une route dynamique pré-rendue correspond mais ne peut servir la requête, Astro essaie maintenant les routes suivantes.


FAQ

Dois-je passer à Sätteri immédiatement ? Si votre site est suffisamment rapide avec l'écosystème unified, restez dessus. Si vous avez des centaines de fichiers markdown et des temps de build douloureux, Sätteri mérite un test. Attention : les plugins remark/rehype ne fonctionnent pas avec Sätteri.

Sätteri supporte-t-il toutes les fonctionnalités markdown d'Astro ? Il supporte les directives. Le GFM complet (tableaux, listes de tâches, barré) et smartypants sont configurables via les options propres à Sätteri.

Qu'en est-il des configs remarkPlugins existantes ? Elles fonctionnent encore en 6.4 mais sont dépréciées. Astro recommande de migrer proactivement vers la nouvelle API processor.

Articles connexes

Plus de couverture avec des sujets et tags en commun.

EmDash : Le Successeur de WordPress signs par Cloudflare, Bass sur TypeScript avec des Plugins en Sandbox
typescript

EmDash : Le Successeur de WordPress signs par Cloudflare, Bass sur TypeScript avec des Plugins en Sandbox

Cloudflare a construit EmDash, un nouveau CMS open source écrit entièrement en TypeScript et propulsé par Astro. Les plugins s'exécutent dans des Dynamic Workers isolés, résolvant le problème de sécurité vieux de décennies dans WordPress.
Deno 2.8 : Audit Fix, Sous-commande CI et Outil de Pack Natif
javascript

Deno 2.8 : Audit Fix, Sous-commande CI et Outil de Pack Natif

Deno 2.8 introduit quatre nouvelles sous-commandes CLI, améliore la compatibilité Node.js et ajoute un packager de paquets ciblant les registries npm.
Bun v1.3.12 — Automatisation Naveau Et Native, Supporte `using` et `await using`
javascript

Bun v1.3.12 — Automatisation Naveau Et Native, Supporte `using` et `await using`

La dernière version de Bun ajoute WebView pour l'automatisation naveau, supporte nativement la proposition TC39 using/await using dans JavaScriptCore, et accélère URLPattern jusqu'à 2,3×.

Commentaires

Connexion Connectez-vous pour participer à la conversation.

Pas encore de commentaires. Soyez le premier à partager vos pensées.