Markdown Integration
Embed diagrams in .md files with remark or markdown-it
یکپارچه سازی Markdown
نمودارهای Datro را مستقیماً با استفاده از بلوکهای کد حصاردار استاندارد در فایلهای Markdown جاسازی کنید. زنجیره ابزار یک افزونه یادداشت (برای MDX، Next.js، Astro، و Vite) و یک افزونه markdown-it (برای VitePress، Docusaurus، و خطوط لوله سفارشی) ارائه میکند.
جاسازی یک نمودار
هر بلوک کد محصور شده را با شناسه زبان datro علامت بزنید. بلوک باید با هدر جادویی #!DATRO 1.0 شروع شود. این افزونه بلوک را با یک SVG درون خطی (یا <img> که به یک 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.اعتبار سنجی در زمان ساخت
هر دو پلاگین در طول ساخت، اعتبار سنجی کامل چهار پاس را اجرا می کنند. اگر هر بلوکی دارای تشخیص شدت خطا باشد، ساخت بلافاصله با مکان file:line:col شکست میخورد.
ویژگی Block id
id="name" را بعد از حصار بازکننده اضافه کنید تا به یک بلوک یک شناسه پایدار بدهید. CLI هنگام نامگذاری فایلهای خروجی از آن استفاده میکند و افزونهها آن را به عنوان یک ویژگی داده در عنصر رندر شده نشان میدهند.
```datro id="auth-flow"
#!DATRO 1.0
node a { type: service label: "A" }
node b { type: service label: "B" }
edge a -> b { kind: http }
```پلاگین remark
از هر خط لوله مبتنی بر اظهار نظر استفاده کنید: Next.js MDX، Astro، Gatsby، یکپارچه یا ساده.
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 | فرمت خروجی رندر شده |
failOnError | boolean | No | true | وقتی false، بلوکهای دارای خطا بهجای شکست در ساخت، بهعنوان کد محصور شده باقی میمانند. |
outDir | string | No | — | دایرکتوری برای فایل های PNG (فقط حالت PNG). به طور پیشفرض در همان فهرستی که فایل منبع است، قرار میگیرد. |
پلاگین markdown-it
با هر خط لوله علامت گذاری استفاده کنید: VitePress، Docusaurus یا هر سرور Node.js که مستقیماً از markdown-it استفاده می کند.
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
در VitePress، افزونه را به defineConfig({ markdown: { config: md => md.use(datroPlugin) } }) اضافه کنید. برای Vite با vite-plugin-markdown مثال پیکربندی Vite را در زیر ببینید.
// 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 (بدون بستهکننده)
اگر از باندلر استفاده نمیکنید، از دستورات CLI datro md برای پردازش مستقیم فایلهای Markdown استفاده کنید. این به Graphviz برای خروجی SVG/PNG نیاز دارد، اما md check بدون آن اجرا میشود.
# 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- فایل های خروجی
{markdown-basename}-{block-id}.{svg|png}نام دارند. - از
--no-failبرای پردازش همه بلوکها استفاده کنید، حتی زمانی که برخی از آنها خطا دارند - برای خطوط لوله انتقال مفید است. - از
--jsonباmd checkبرای خروجی ساخت یافته در سیستم های حاشیه نویسی CI استفاده کنید.
مراحل بعدی
.dtroرا برای نحو کامل.dtroبخوانید.datro md renderپرچمهایdatro md renderو ادغام CI را بخوانید.
بدون هیچ گونه تنظیمات محلی، نمودارها را در مرورگر بسازید و پیش نمایش کنید.