Diagram MakerMarkdown Integration
📄

Markdown Integration

Embed diagrams in .md files with remark or markdown-it

یکپارچه سازی Markdown

نمودارهای Datro را مستقیماً با استفاده از بلوک‌های کد حصاردار استاندارد در فایل‌های Markdown جاسازی کنید. زنجیره ابزار یک افزونه یادداشت (برای MDX، Next.js، Astro، و Vite) و یک افزونه markdown-it (برای VitePress، Docusaurus، و خطوط لوله سفارشی) ارائه می‌کند.

افزونه remarkپلاگین markdown-itخط لوله CLIخروجی SVG · PNG

جاسازی یک نمودار

هر بلوک کد محصور شده را با شناسه زبان datro علامت بزنید. بلوک باید با هدر جادویی #!DATRO 1.0 شروع شود. این افزونه بلوک را با یک SVG درون خطی (یا <img> که به یک PNG رندر شده اشاره می‌کند) تجزیه، اعتبارسنجی و جایگزین می‌کند.

docs/architecture.md
# 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 هنگام نام‌گذاری فایل‌های خروجی از آن استفاده می‌کند و افزونه‌ها آن را به عنوان یک ویژگی داده در عنصر رندر شده نشان می‌دهند.

Markdown
```datro id="auth-flow"
#!DATRO 1.0
node a { type: service label: "A" }
node b { type: service label: "B" }
edge a -> b { kind: http }
```
فایل خروجی به جای `architecture-block-1.svg` می شود `architecture-auth-flow.svg`

پلاگین remark

از هر خط لوله مبتنی بر اظهار نظر استفاده کنید: Next.js MDX، Astro، Gatsby، یکپارچه یا ساده.

SH
npm install datro remark remark-html
نصب کنید
remark.config.mjs
// 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
// 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"],
});
FieldTypeRequiredDescription
formatstring
"svg""png"
Noفرمت خروجی رندر شده
failOnErrorbooleanNoوقتی false، بلوک‌های دارای خطا به‌جای شکست در ساخت، به‌عنوان کد محصور شده باقی می‌مانند.
outDirstringNoدایرکتوری برای فایل های PNG (فقط حالت PNG). به طور پیش‌فرض در همان فهرستی که فایل منبع است، قرار می‌گیرد.

پلاگین markdown-it

با هر خط لوله علامت گذاری استفاده کنید: VitePress، Docusaurus یا هر سرور Node.js که مستقیماً از markdown-it استفاده می کند.

JavaScript
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);
استفاده مستقیم با markdown-it
💡

VitePress / Vite

در VitePress، افزونه را به defineConfig({ markdown: { config: md => md.use(datroPlugin) } }) اضافه کنید. برای Vite با vite-plugin-markdown مثال پیکربندی Vite را در زیر ببینید.

vite.config.ts
// 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 بدون آن اجرا می‌شود.

SH
# 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 را بخوانید.
دیاگرام ساز را باز کنید

بدون هیچ گونه تنظیمات محلی، نمودارها را در مرورگر بسازید و پیش نمایش کنید.

Schema v1 · Updated September 2026