سلام.
این مخزن یک starter برای ساخت وبسایت شخصی با Quartz 5 است؛ از اول برای فارسی، راستچین و یادداشتهای Obsidian تنظیم شده.
نمونه زنده: eledah.ir/quartz
- فونت وزیرمتن برای متن و رابط، IBM Plex Mono برای کد
- پلاگین
bidi-textبرای تشخیص RTL/LTR در هر پاراگراف (مثلاً جمله انگلیسی وسط متن فارسی) locale: fa-IRبرای تاریخ، منو و پیامها- استایل RTL در Explorer، فهرست مطالب، نقلقولها و موبایل
- تمهای Obsidian با
@quartz-themes/core(پیشفرض: Things) - استقرار خودکار روی GitHub Pages با push به شاخه
v5
پیشنیاز: Node.js 22+ و Git
git clone https://github.com/eledah/quartz.git
cd quartz
git checkout v5
npm install
npx quartz build --serveسایت روی http://localhost:8080 بالا میآید.
قبل از build در CI هم همین مسیر را بروید: npm install و بعد npx quartz build.
- یادداشتها را در
content/بگذارید - در
quartz.config.yamlمقدارهایpageTitleوbaseUrlرا عوض کنید - اگر خواستید تم Obsidian دیگری بگذارید، بخش تمها را پایینتر ببینید
quartz/
├── content/ # یادداشتهای Markdown
├── quartz.config.yaml # تنظیمات سایت و پلاگینها
├── quartz.ts # بارگذاری config (اختیاری برای override)
├── plugins/bidi-text/ # پلاگین محلی دوجهته
├── quartz/styles/custom.scss # استایلهای RTL و فونت
└── .quartz/plugins/ # پلاگینهای نصبشده (بعد از build)
از نسخه اخیر میتوانید تمهای Obsidian را مستقیم روی سایت بگذارید؛ همان تمهایی که در ویتاینر میشناسید (Catppuccin، Things، Minimal، Tokyo Night و خیلیهای دیگر).
پلاگین @quartz-themes/core تم را از npm میگیرد. اولین build معمولاً خودش پکیج تم را نصب میکند (مثلاً @quartz-themes/things).
plugins:
- source: "@quartz-community/quartz-fonts"
enabled: true
options:
useThemeFonts: false
fontOrigin: googleFonts
body: Vazirmatn
header: Vazirmatn
interface: Vazirmatn
code: IBM Plex Mono
- source: "@quartz-themes/core"
enabled: true
options:
theme: things # نام تم: catppuccin، minimal، nord، ...
mode: both # dark | light | bothچند نکته از تجربه خودم:
- برای فارسی معمولاً
useThemeFonts: falseبهتر است و فونت را دستی روی Vazirmatn میگذارم؛ تمهای Obsidian اغلب برای انگلیسی طراحی شدهاند. - فایل
quartz/styles/custom.scssچند تا override دارد (فونت callout و search، فاصله checkbox در RTL و ...). اگر تم عوض کردید و چیزی بههم ریخت، اول همانجا را نگاه کنید. - لیست تمها را در quartz-themes ببینید؛ بیش از ۸۰۰ تم هست.
تم پیشفرض این قالب الان Things است. برای عوض کردنش فقط theme: را در config عوض کنید و دوباره build بگیرید.
بیشتر قابلیتها پلاگین جدا هستند و از npm با پیشوند @quartz-community/ نصب میشوند (دیگر لازم نیست از GitHub clone شوند).
| نوع | کار |
|---|---|
| Transformer | پردازش Markdown |
| Filter | حذف یا فیلتر صفحات |
| Emitter | sitemap، OG image و ... |
| Page Type | صفحه محتوا، پوشه، تگ |
| Component | Explorer، Search، Graph |
دستورهای پرکاربرد:
npx quartz plugin install --from-config # نصب پلاگینهای config
npx quartz plugin prune # حذف پلاگینهای اضافهنمونه در YAML:
plugins:
- source: "@quartz-community/explorer"
enabled: true
layout:
position: left
priority: 50
- source: ./plugins/bidi-text
enabled: true
order: 35وقتی <html dir="rtl"> باشد، همهچیز راستچین میشود؛ حتی یک جمله انگلیسی وسط پاراگراف فارسی.
bidi-text روی هر <p> و <h1>–<h6> نگاه میکند اولین حرف معنادار فارسی است یا لاتین، و dir همان بلوک را جدا تنظیم میکند:
<p dir="rtl">این پاراگراف فارسی است.</p>
<p dir="ltr">This one stays LTR.</p>ترتیب پردازش: OFM (۳۰) → bidi-text (۳۵) → GFM (۴۰).
کد در plugins/bidi-text/. برای غیرفعال کردن:
- source: ./plugins/bidi-text
enabled: falsequartz/styles/custom.scss علاوه بر فونت:
- padding و margin راستچین برای breadcrumbs، TOC، tags، explorer
- برچسب «پانوشتها» بهجای Footnotes
direction: ltrبرای بلوک کد- Explorer موبایل از سمت راست باز میشود
configuration:
pageTitle: "بلاگ من"
locale: fa-IR
baseUrl: eledah.ir/quartz
theme:
typography:
header: Vazirmatn
body: Vazirmatn
code: IBM Plex MonoWorkflow در .github/workflows/deploy.yml با هر push به v5:
npm installnpx quartz build- انتشار در GitHub Pages
در تنظیمات مخزن: Settings → Pages → Source: GitHub Actions
همزمان یک workflow روزانه هم upstream Quartz را merge میکند (.github/workflows/sync-upstream.yaml).
| شاخه | توضیح |
|---|---|
v5 |
Quartz 5 + پلاگینهای npm (فعلی) |
v4 |
نسخه قدیمی با quartz.config.ts |
مهاجرت از v4: MIGRATION.md
- مستندات Quartz 5
- پلاگینهای community
- Quartz Themes
- میانبر سایتسازی با کوارتز
- از یادداشت به سایت با کوارتز
| مشکل | چه کار کنید |
|---|---|
| خطای پلاگین در build | npx quartz plugin install --from-config |
| تم عوض نشد | theme: در @quartz-themes/core را چک کنید و دوباره build بگیرید |
| فونت تم با فارسی جور نیست | useThemeFonts: false و Vazirmatn در quartz-fonts |
| متن انگلیسی RTL شده | bidi-text را enabled: true بگذارید |
npm install در ایران |
--registry https://registry.npmjs.org/ |
اگر سوالی بود، issue بزنید یا PR بفرستید.