Markdown Integration
Embed diagrams in .md files with remark or markdown-it
Markdown-integrering
LÀgg in datoriteringar direkt i markdown-filer genom att anvÀnda standardskyddade kodblock. Toolchain erbjuder en mark-plugin (för MDX, Next.js, Astro och Vite) och en markdown-it-plugin (för VitePress, Docusaurus och kunddefinierade pipelines).
InlÀggning av en diagram
Markera varje instÀngd kodblock med sprÄkkÀnnandet datro. Blokken mÄste börja med den magiska header #!DATRO 1.0. Plug-in analyserar, validerar och ersÀtter blocket med en inline-SVG (eller <img>, som pÄpekar en renderad PNG).
# 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.Validering vid byggtid
BÄda plugins utföra den fullstÀndiga fyrapass valideraren under byggandet. Om ett block har en felgrad diagnostiserad misslyckas omedelbart den hÀr bilden med positionen file:line:col.
Block-ID-attribut
LÀgg till id="name" efter öppningsfÀltet för att ge en block ett stabilt identifiering. CLI anvÀnder detta för att namnge utgÄngsfiler och plugins ger det som en datatribut för det omrenderade elementet.
```datro id="auth-flow"
#!DATRO 1.0
node a { type: service label: "A" }
node b { type: service label: "B" }
edge a -> b { kind: http }
```AnmÀrkningsplugin
AnvÀndning med varje kommentarbaserad pipeline: Next.js MDX, Astro, Gatsby, Unified eller 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;NĂ€sta.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 | OmstÀlld utgÄva. |
failOnError | boolean | No | true | Om false kvarstÄr felaktiga block som skyddad kod, istÀllet för att byggan misslyckas. |
outDir | string | No | â | Förteckning för PNG-filer ( PNG-modus). Samma register som kĂ€llan standard. |
Markdown-it-plugin
AnvÀndning med alla markdown-it-pipeliner: VitePress, Docusaurus eller alla Node.js-servrar som anvÀnder markdown-it direkt.
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
LÀgga till plugin i VitePress för att defineConfig({ markdown: { config: md => md.use(datroPlugin) } }) tillÀgg. För Vite med vite-plugin markdown se Vite-konfigurationsexemplet nedan.
// 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-pipelin (ingen bandel)
Om du inte anvÀnder en bindare, anvÀnd CLI-kommandoen datro md för att behandla markdownfiler direkt. Detta krÀver graphviz för SVG/PNG-utgÄvan, men md check gÄr utan det.
# 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- Bli utgivna filer
{markdown-basename}-{block-id}.{svg|png}kallad. - AnvÀnd
--no-failför att behandla alla block, Àven om det finns nÄgra fel anvÀndbart för migrationspipeliner. - AnvÀnd
--jsonmedmd checkför en strukturerad utgÄva i CI-annotationssystem.
NĂ€sta steg
- LÀs Language Reference för den fullstÀndiga
.dtro-syntaxen. - LÀs CLI Reference flaggan för
datro md renderoch CI-integrationen.
Skapa diagram i webblÀsaren och visa dem i förhandsvisningen utan att det behövs nÄgon lokal instÀllning.