Pele: Il Renderer Fulmineo di Mermaid di Obsidian Diventa Open Source
AI News

Pele: Il Renderer Fulmineo di Mermaid di Obsidian Diventa Open Source

4 min
18/10/2026
PeleMermaidObsidianSVG

Pele di Obsidian: Una Nuova Era per il Rendering dei Diagrammi Mermaid

Obsidian, la popolare piattaforma di gestione della conoscenza, ha svelato Pele, una libreria open source leggera che renderizza i diagrammi Mermaid come SVG tematici. Sviluppata da Steph Ango (kepano), la libreria diventerà il renderer predefinito nella prossima versione di Obsidian, ma è già disponibile per qualsiasi sviluppatore che voglia integrarla. Il progetto prende il nome dalla dea hawaiana dei vulcani e del fuoco, un soprannome appropriato per uno strumento progettato per essere esplosivo in termini di prestazioni.

Pele affronta direttamente i problemi di lunga data della libreria standard Mermaid.js: dimensione del bundle, velocità di rendering e complessità della tematizzazione. Sfruttando le variabili CSS invece di una configurazione di tema rigida, Pele consente a sviluppatori e utenti di stilizzare i diagrammi con una flessibilità senza precedenti. Il risultato è un renderer non solo più veloce, ma anche più reattivo alle preferenze dell'utente e ai contesti del dispositivo.

Benchmark delle Prestazioni: 500x Più Veloce e 6x Più Piccolo

I numeri principali del confronto ufficiale sono sorprendenti. Pele vanta una dimensione del bundle gzip di soli 230 kB rispetto ai 1,6 MB di Mermaid.js, una riduzione di 6 volte. Ancora più impressionante, i tempi di rendering scendono da 6–82 ms a soli 0,05–0,3 ms, rappresentando un miglioramento della velocità fino a 500 volte. Questo è ottenuto con zero dipendenze dirette, mentre Mermaid.js ne ha 23.

Questi guadagni non sono solo teorici. Per Obsidian, che renderizza i diagrammi dinamicamente mentre gli utenti digitano, ciò si traduce in un'esperienza di presa di appunti notevolmente più fluida. Per gli sviluppatori web, significa caricamenti di pagina più veloci e meno JavaScript da analizzare, specialmente sui dispositivi mobili. La differenza di prestazioni è così significativa che potrebbe spostare la scelta predefinita per i nuovi progetti che richiedono la compatibilità con Mermaid.

Tematizzazione tramite Variabili CSS: Personalizzazione Istantanea Senza Ri-renderizzazione

L'approccio alla tematizzazione di Pele è la sua caratteristica più innovativa. Invece di una configurazione di tema centrale, Pele espone sette variabili CSS che controllano l'intero aspetto visivo:

  • --pele-bg: Colore di sfondo
  • --pele-fg: Colore del testo in primo piano
  • --pele-muted: Colore del testo attenuato
  • --pele-line: Colore delle linee e dei connettori
  • --pele-surface: Superficie primaria (es. sfondo dei nodi)
  • --pele-surface-alt: Colore della superficie alternativa
  • --pele-border: Colore del bordo

Poiché si tratta di variabili CSS standard, le modifiche ai colori si applicano senza dover ri-renderizzare l'SVG. Questo è un punto di svolta per le applicazioni che supportano la tematizzazione o la modalità scura, poiché i diagrammi possono adattarsi istantaneamente alle preferenze dell'utente o alle impostazioni di sistema. Gli sviluppatori possono anche ereditare le variabili dal proprio sistema di design, assicurando che i diagrammi corrispondano perfettamente all'interfaccia utente circostante.

continua a leggere sotto...

Piena Compatibilità con Mermaid 12.1.0 e Layout Reattivo

Nonostante i vantaggi in termini di prestazioni e dimensioni, Pele mantiene la piena compatibilità con la sintassi di Mermaid. Supporta ogni tipo di diagramma integrato in Mermaid 12.1.0, inclusi diagrammi di flusso, diagrammi di sequenza, diagrammi delle classi, diagrammi di stato e altro ancora. Ciò significa che gli sviluppatori possono migrare il codice Mermaid esistente senza dover riscrivere i loro diagrammi.

Pele gestisce anche il design reattivo in modo diverso rispetto a Mermaid.js. Su schermi piccoli, Pele adatta il layout del diagramma stesso, invece di limitarsi a ridimensionare l'intero SVG. Questo approccio preserva la leggibilità e impedisce che i diagrammi diventino compressi o illeggibili sui dispositivi mobili, un miglioramento sottile ma cruciale per le moderne applicazioni web.

Come Integrare Pele nella Tua Applicazione

Aggiungere Pele a un progetto è semplice. È disponibile tramite tutti i principali gestori di pacchetti:

npm install pele
pnpm add pele
yarn add pele
bun add pele

L'API consiste in una singola funzione render() che accetta la sintassi Mermaid e restituisce una stringa SVG:

import { render } from 'pele';

const { svg } = render(`flowchart LR
  A[Testo Mermaid] --> B[SVG]`);

document.querySelector('#diagram').innerHTML = svg;

Questa semplicità è intenzionale. La libreria è progettata per essere un sostituto immediato di Mermaid.js nella maggior parte dei casi d'uso, con il vantaggio aggiuntivo della tematizzazione basata su CSS. La documentazione ufficiale include un'area di prova dove gli utenti possono sperimentare sia con la sintassi Mermaid che con le variabili CSS in tempo reale.

Perché Pele è Importante per l'Ecosistema dello Sviluppo Web

Il rilascio di Pele rappresenta un cambiamento significativo nel modo in cui il rendering dei diagrammi può essere affrontato. Disaccoppiando il motore di rendering dalla tematizzazione e sfruttando le variabili CSS, Obsidian ha creato una libreria che è sia amichevole per gli sviluppatori che incentrata sull'utente. I guadagni di prestazioni non sono incrementali, ma trasformativi, specialmente per le applicazioni che renderizzano molti diagrammi o operano su dispositivi a bassa potenza.

Inoltre, la licenza MIT di Pele e la sua natura open source consentono di adottarla liberamente in progetti commerciali e personali. Il suo sviluppo per Obsidian garantisce che sarà testata sul campo in un'applicazione reale, e la comunità attiva attorno a entrambi i progetti suggerisce una manutenzione e miglioramenti continui. Mentre il web continua a richiedere esperienze più veloci e reattive, Pele si posiziona come un'alternativa convincente alla consolidata libreria Mermaid.js.