Markdown Integration
Embed diagrams in .md files with remark or markdown-it
Markdown-Integration
Betten Sie Datro-Diagramme direkt in Markdown-Dateien ein, indem Sie standardmĂ€Ăige abgeschirmte Codeblöcke verwenden. Die Toolchain bietet ein Remark-Plugin (fĂŒr MDX, Next.js, Astro und Vite) und ein Markdown-it-Plugin (fĂŒr VitePress, Docusaurus und benutzerdefinierte Pipelines).
Einbetten eines Diagramms
Markieren Sie jeden eingezÀunten Codeblock mit der Sprachkennung datro. Der Block muss mit dem magischen Header #!DATRO 1.0 beginnen. Das Plugin analysiert, validiert und ersetzt den Block durch ein Inline-SVG (oder <img>, das auf ein gerendertes PNG verweist).
# System Architecture
The diagram below is generated automatically from source:
```datro
#!DATRO 1.0
meta { title: "Auth Service" }
node client { type: web label: "Browser" }
node api_gw { type: gateway label: "API Gateway" }
node auth { type: service label: "Auth Service" }
node user_db { type: database label: "User DB" }
edge client -> api_gw { kind: http label: "POST /login" }
edge api_gw -> auth { kind: http }
edge auth -> user_db { kind: query }
layout { direction: LR algo: dagre }
theme {
palette { gateway: "#FFD0D0" service: "#D0E8FF" database: "#FFE8C0" }
accessibility { min_contrast: AA }
}
```
> Rendered inline by the datro remark plugin.Validierung zur Build-Zeit
Beide Plugins fĂŒhren wĂ€hrend des Builds den vollstĂ€ndigen Vier-Pass-Validator aus. Wenn fĂŒr einen Block eine Fehlerschwerediagnose vorliegt, schlĂ€gt der Build mit der Position file:line:col sofort fehl.
Block-ID-Attribut
FĂŒgen Sie id="name" nach dem Ăffnungszaun hinzu, um einem Block eine stabile Kennung zu geben. Die CLI verwendet dies beim Benennen von Ausgabedateien und die Plugins stellen es als Datenattribut fĂŒr das gerenderte Element bereit.
```datro id="auth-flow"
#!DATRO 1.0
node a { type: service label: "A" }
node b { type: service label: "B" }
edge a -> b { kind: http }
```Bemerkungs-Plugin
Verwendung mit jeder auf Bemerkungen basierenden Pipeline: Next.js MDX, Astro, Gatsby, Unified oder Plain Remark.
npm install datro remark remark-html// remark.config.mjs
import remarkDatro from "datro/remark";
const config = {
plugins: [
// Transforms ```datro blocks to inline SVG
[remarkDatro, { format: "svg" }],
],
};
export default config;Next.js MDX
// next.config.mjs
import remarkDatro from "datro/remark";
import createMDX from "@next/mdx";
const withMDX = createMDX({
options: {
remarkPlugins: [[remarkDatro, { format: "svg" }]],
},
});
export default withMDX({
pageExtensions: ["js", "jsx", "ts", "tsx", "md", "mdx"],
});| Field | Type | Required | Default | Description |
|---|---|---|---|---|
format | string "svg""png" | No | svg | Gerendertes Ausgabeformat. |
failOnError | boolean | No | true | Bei false bleiben fehlerhafte Blöcke als abgeschirmter Code ĂŒbrig, anstatt dass der Build fehlschlĂ€gt. |
outDir | string | No | â | Verzeichnis fĂŒr PNG-Dateien (nur PNG-Modus). StandardmĂ€Ăig dasselbe Verzeichnis wie die Quelldatei. |
Markdown-it-Plugin
Verwendung mit jeder Markdown-it-Pipeline: VitePress, Docusaurus oder jedem Node.js-Server, der Markdown-it direkt verwendet.
import MarkdownIt from "markdown-it";
import datroPLugin from "datro/markdown-it";
const md = new MarkdownIt();
md.use(datroPLugin, { format: "svg" });
const html = md.render(source);VitePress / Vite
FĂŒgen Sie in VitePress das Plugin zu defineConfig({ markdown: { config: md => md.use(datroPlugin) } }) hinzu. FĂŒr Vite mit vite-plugin-markdown siehe das Vite-Konfigurationsbeispiel unten.
// vite.config.ts
import { defineConfig } from "vite";
import mdPlugin from "vite-plugin-markdown";
import remarkDatro from "datro/remark";
export default defineConfig({
plugins: [
mdPlugin({
remarkPlugins: [[remarkDatro, { format: "svg" }]],
}),
],
});CLI-Pipeline (kein Bundler)
Wenn Sie keinen Bundler verwenden, verwenden Sie die CLI-Befehle datro md, um Markdown-Dateien direkt zu verarbeiten. Dies erfordert Graphviz fĂŒr die SVG/PNG-Ausgabe, aber md check lĂ€uft ohne es.
# Render all datro blocks in a markdown file to SVG
datro md render docs/architecture.md --out-dir public/diagrams
# Validate all blocks without rendering (fast, no Graphviz needed)
datro md check docs/architecture.md- Ausgabedateien werden
{markdown-basename}-{block-id}.{svg|png}genannt. - Verwenden Sie
--no-fail, um alle Blöcke zu verarbeiten, auch wenn einige Fehler aufweisen â nĂŒtzlich fĂŒr Migrationspipelines. - Verwenden Sie
--jsonmitmd checkfĂŒr eine strukturierte Ausgabe in CI-Annotationssystemen.
NĂ€chste Schritte
- Lesen Sie Language Reference fĂŒr die vollstĂ€ndige
.dtro-Syntax. - Lesen Sie die CLI Reference-Flags fĂŒr
datro md renderund die CI-Integration.
Erstellen Sie Diagramme im Browser und zeigen Sie sie in der Vorschau an, ohne dass eine lokale Einrichtung erforderlich ist.