## ارجاع به منابع ایستا{#referencing-static-assets}
تمام فایلهای Markdown به کامپوننتهای Vue تبدیل و توسط [Vite](https://vitejs.dev/guide/assets.html) پردازش میشوند. شما میتوانید، **و باید**، هر نوع دارایی را با استفاده از URLهای نسبی مرجع قرار دهید:
تمام فایلهای Markdown به کامپوننتهای Vue تبدیل و توسط [Vite](https://vitejs.dev/guide/assets.html) پردازش میشوند. شما میتوانید، **و باید**، هر نوع دارایی را با استفاده از URLهای نسبی مرجع قرار دهید:
@ -20,7 +20,7 @@ PDFها یا سندهای دیگر که از طریق پیوندها در ف
تمام ارجاعهای مسیر **ایستا**، شامل مسیرهای مطلق، باید بر اساس ساختار دایرکتوری کاری شما تعیین شوند.
تمام ارجاعهای مسیر **ایستا**، شامل مسیرهای مطلق، باید بر اساس ساختار دایرکتوری کاری شما تعیین شوند.
## دایرکتوری عمومی
## دایرکتوری عمومی{#the-public-directory}
گاهی اوقات ممکن است نیاز داشته باشید منابع ایستا را فراهم کنید که به صورت مستقیم در هیچیک از Markdown یا کامپوننتهای قالب شما ارجاع نشدهاند، یا ممکن است بخواهید برخی فایلها را با نام اصلی خود سرویس دهید. به عنوان مثال، فایلهایی مانند `robots.txt`، آیکونهای fav، و آیکونهای PWA.
گاهی اوقات ممکن است نیاز داشته باشید منابع ایستا را فراهم کنید که به صورت مستقیم در هیچیک از Markdown یا کامپوننتهای قالب شما ارجاع نشدهاند، یا ممکن است بخواهید برخی فایلها را با نام اصلی خود سرویس دهید. به عنوان مثال، فایلهایی مانند `robots.txt`، آیکونهای fav، و آیکونهای PWA.
@ -30,7 +30,7 @@ PDFها یا سندهای دیگر که از طریق پیوندها در ف
توجه داشته باشید که باید به فایلهای قرار داده شده در `public` با استفاده از مسیر مطلق ریشه ارجاع دهید - به عنوان مثال، `public/icon.png` همیشه باید به عنوان `/icon.png` در کد منبع ارجاع داده شود.
توجه داشته باشید که باید به فایلهای قرار داده شده در `public` با استفاده از مسیر مطلق ریشه ارجاع دهید - به عنوان مثال، `public/icon.png` همیشه باید به عنوان `/icon.png` در کد منبع ارجاع داده شود.
## URL پایه
## URL پایه {#base-url}
اگر وبسایت شما به URL غیر ریشه استقرار مییابد، باید گزینه `base` را در `.vitepress/config.js` تنظیم کنید. به عنوان مثال، اگر قصد دارید وبسایت خود را به `https://foo.github.io/bar/` استقرار دهید، آنگاه `base` باید به `'/bar/'` تنظیم شود (همیشه باید با یک خط شروع و پایان یابد).
اگر وبسایت شما به URL غیر ریشه استقرار مییابد، باید گزینه `base` را در `.vitepress/config.js` تنظیم کنید. به عنوان مثال، اگر قصد دارید وبسایت خود را به `https://foo.github.io/bar/` استقرار دهید، آنگاه `base` باید به `'/bar/'` تنظیم شود (همیشه باید با یک خط شروع و پایان یابد).
# اتصال به یک سیستم مدیریت محتوا (CMS){#connecting-to-a-cms}
## گامهای کلی
## گامهای کلی{#general-workflow}
اتصال ویتپرس به یک سیستم مدیریت محتوا به طور عمده بر اساس [مسیریابی پویا](./routing#dynamic-routes) خواهد بود. حتماً قبل از شروع، با روش کار آن آشنا شوید.
اتصال ویتپرس به یک سیستم مدیریت محتوا به طور عمده بر اساس [مسیریابی پویا](./routing#dynamic-routes) خواهد بود. حتماً قبل از شروع، با روش کار آن آشنا شوید.
@ -51,6 +51,6 @@ outline: deep
<!-- @content -->
<!-- @content -->
```
```
## راهنماهای ادغام
## راهنماهای ادغام{#integration-guides}
اگر راهنمایی درباره ادغام ویتپرس با یک سیستم مدیریت محتوا خاص نوشتهاید، لطفاً از لینک "ویرایش این صفحه" زیر استفاده کنید تا آن را ارسال کنید!
اگر راهنمایی درباره ادغام ویتپرس با یک سیستم مدیریت محتوا خاص نوشتهاید، لطفاً از لینک "ویرایش این صفحه" زیر استفاده کنید تا آن را ارسال کنید!
میتوانید با ایجاد یک فایل `.vitepress/theme/index.js` یا `.vitepress/theme/index.ts` (فایل ورودی تم) تم سفارشی را فعال کنید:
میتوانید با ایجاد یک فایل `.vitepress/theme/index.js` یا `.vitepress/theme/index.ts` (فایل ورودی تم) تم سفارشی را فعال کنید:
@ -21,7 +21,7 @@ outline: deep
وقتی ویتپرس حضور یک فایل ورودی تم را شناسایی کند، همواره از تم سفارشی به جای تم پیشفرض استفاده میکند. با این حال، شما میتوانید [تم پیشفرض را گسترش دهید](./extending-default-theme) تا سفارشیسازیهای پیشرفتهتری را روی آن اعمال کنید.
وقتی ویتپرس حضور یک فایل ورودی تم را شناسایی کند، همواره از تم سفارشی به جای تم پیشفرض استفاده میکند. با این حال، شما میتوانید [تم پیشفرض را گسترش دهید](./extending-default-theme) تا سفارشیسازیهای پیشرفتهتری را روی آن اعمال کنید.
## رابط تم
## رابط تم{#theme-interface}
یک تم سفارشی ویتپرس به عنوان یک شی تعریف میشود که شامل رابط زیر است:
یک تم سفارشی ویتپرس به عنوان یک شی تعریف میشود که شامل رابط زیر است:
@ -72,7 +72,7 @@ export پیشفرض تنها قراردادی برای یک تم سفارشی
درون کامپوننت لایهی خود، دقیقاً مانند یک برنامه Vite + Vue 3 عادی عمل میکند. با این وجود، توجه داشته باشید که تم همچنین باید [سازگار با SSR](./ssr-compat) باشد.
درون کامپوننت لایهی خود، دقیقاً مانند یک برنامه Vite + Vue 3 عادی عمل میکند. با این وجود، توجه داشته باشید که تم همچنین باید [سازگار با SSR](./ssr-compat) باشد.
## ساخت یک لایه
## ساخت یک لایه {#building-a-layout}
بیشترین لایهی پایهای نیازمند دارای یک کامپوننت `<Content />` است:
بیشترین لایهی پایهای نیازمند دارای یک کامپوننت `<Content />` است:
برای همه چیزی که در کامپوننتهای تم موجود است، به [مستندات API اجرایی](../reference/runtime-api) مراجعه کنید. به علاوه، شما میتوانید از [بارگذاری داده در زمان ساخت](./data-loading) استفاده کنید تا لایههای مبتنی بر داده را تولید کنید - به عنوان مثال، یک صفحه که تمام پستهای وبلاگ در پروژه فعلی را لیست میکند.
برای همه چیزی که در کامپوننتهای تم موجود است، به [مستندات API اجرایی](../reference/runtime-api) مراجعه کنید. به علاوه، شما میتوانید از [بارگذاری داده در زمان ساخت](./data-loading) استفاده کنید تا لایههای مبتنی بر داده را تولید کنید - به عنوان مثال، یک صفحه که تمام پستهای وبلاگ در پروژه فعلی را لیست میکند.
## توزیع یک تم سفارشی
## توزیع یک تم سفارشی {#distributing-a-custom-theme}
آسانترین روش برای توزیع یک تم سفارشی ارائه آن به عنوان [قالب مخزن در GitHub](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-template-repository) است.
آسانترین روش برای توزیع یک تم سفارشی ارائه آن به عنوان [قالب مخزن در GitHub](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-template-repository) است.
# بارگذاری داده در زمان ساخت{#build-time-data-loading}
ویتپرس یک ویژگی به نام **بارگذارهای داده** ارائه میدهد که به شما این امکان را میدهد که دادههای دلخواه را بارگیری کنید و آنها را از صفحات یا اجزا وارد کنید. بارگذاری داده فقط **در زمان ساخت** اجرا میشود: دادههای حاصل به صورت JSON در بسته JavaScript نهایی سریالیزه میشوند.
ویتپرس یک ویژگی به نام **بارگذارهای داده** ارائه میدهد که به شما این امکان را میدهد که دادههای دلخواه را بارگیری کنید و آنها را از صفحات یا اجزا وارد کنید. بارگذاری داده فقط **در زمان ساخت** اجرا میشود: دادههای حاصل به صورت JSON در بسته JavaScript نهایی سریالیزه میشوند.
بارگذارهای داده میتوانند برای بارگیری دادههای از راه دور یا تولید فرادادهها بر اساس فایلهای محلی استفاده شوند. به عنوان مثال، میتوانید از بارگذارهای داده استفاده کنید تا تمام صفحات API محلی خود را تجزیه کنید و به طور خودکار یک فهرست از تمام ورودیهای API تولید کنید.
بارگذارهای داده میتوانند برای بارگیری دادههای از راه دور یا تولید فرادادهها بر اساس فایلهای محلی استفاده شوند. به عنوان مثال، میتوانید از بارگذارهای داده استفاده کنید تا تمام صفحات API محلی خود را تجزیه کنید و به طور خودکار یک فهرست از تمام ورودیهای API تولید کنید.
## استفاده ابتدایی
## استفاده ابتدایی{#basic-usage}
یک فایل بارگذار داده باید با `.data.js` یا `.data.ts` پایان یابد. فایل باید یک صادرات پیشفرض از یک شی با متد `load()` داشته باشد:
یک فایل بارگذار داده باید با `.data.js` یا `.data.ts` پایان یابد. فایل باید یک صادرات پیشفرض از یک شی با متد `load()` داشته باشد:
@ -52,7 +52,7 @@ export default {
}
}
```
```
## داده از فایلهای محلی
## داده از فایلهای محلی{#data-from-local-files}
وقتی نیاز به تولید داده بر اساس فایلهای محلی دارید، باید از گزینه `watch` در بارگذار داده استفاده کنید تا تغییرات اعمال شده به این فایلها بتواند به روزرسانیهای سریع منجر شود.
وقتی نیاز به تولید داده بر اساس فایلهای محلی دارید، باید از گزینه `watch` در بارگذار داده استفاده کنید تا تغییرات اعمال شده به این فایلها بتواند به روزرسانیهای سریع منجر شود.
@ -80,7 +80,7 @@ export default {
}
}
```
```
## `createContentLoader`
## `createContentLoader` {#createcontentloader}
وقتی که در حال ساختن یک سایت متمرکز بر محتوا هستیم، اغلب نیاز به ایجاد یک "بایگانی" یا "فهرست" صفحه داریم: یک صفحه که ما همه ورودیهای موجود در مجموعه محتوای خود را لیست میکنیم، به عنوان مثال پستهای وبلاگ یا صفحات API. ما میتوانیم این کار را مستقیماً با API بارگذار داده انجام دهیم، اما از آنجا که این یک حالت استفاده رایج است، ویتپرس همچنین یک کمککننده به نام `createContentLoader` را فراهم میکند تا این فرآیند را سادهتر کند:
وقتی که در حال ساختن یک سایت متمرکز بر محتوا هستیم، اغلب نیاز به ایجاد یک "بایگانی" یا "فهرست" صفحه داریم: یک صفحه که ما همه ورودیهای موجود در مجموعه محتوای خود را لیست میکنیم، به عنوان مثال پستهای وبلاگ یا صفحات API. ما میتوانیم این کار را مستقیماً با API بارگذار داده انجام دهیم، اما از آنجا که این یک حالت استفاده رایج است، ویتپرس همچنین یک کمککننده به نام `createContentLoader` را فراهم میکند تا این فرآیند را سادهتر کند:
@ -133,7 +133,7 @@ import { data as posts } from './posts.data.js'
</template>
</template>
```
```
### گزینهها
### گزینهها{#options}
احتمالاً داده پیشفرض به تمام نیازها پاسخ نمیدهد - شما میتوانید با استفاده از گزینهها به تبدیل دادهها مشترک شوید:
احتمالاً داده پیشفرض به تمام نیازها پاسخ نمیدهد - شما میتوانید با استفاده از گزینهها به تبدیل دادهها مشترک شوید:
بهطور پیشفرض، ما فرض میکنیم که وبسایت در مسیر ریشه دامنه (`/`) انتشار مییابد. اگر وبسایت شما باید در یک زیرمسیر ارائه شود، مانند `https://mywebsite.com/blog/`، در این صورت باید گزینه [`base`](../reference/site-config#base) را به `'/blog/'` در پیکربندی ویتپرس تنظیم کنید.
بهطور پیشفرض، ما فرض میکنیم که وبسایت در مسیر ریشه دامنه (`/`) انتشار مییابد. اگر وبسایت شما باید در یک زیرمسیر ارائه شود، مانند `https://mywebsite.com/blog/`، در این صورت باید گزینه [`base`](../reference/site-config#base) را به `'/blog/'` در پیکربندی ویتپرس تنظیم کنید.
**مثال:** اگر از صفحات GitHub (یا GitLab) استفاده میکنید و به `user.github.io/repo/` انتشار میدهید، آنگاه `base` را به `/repo/` تنظیم کنید.
**مثال:** اگر از صفحات GitHub (یا GitLab) استفاده میکنید و به `user.github.io/repo/` انتشار میدهید، آنگاه `base` را به `/repo/` تنظیم کنید.
اگر شما کنترلی بر روی سربرگهای HTTP در سرور تولیدی خود دارید، میتوانید سربرگهای `cache-control` را پیکربندی کنید تا بهبود عملکرد در بازدیدهای تکراری داشته باشید.
اگر شما کنترلی بر روی سربرگهای HTTP در سرور تولیدی خود دارید، میتوانید سربرگهای `cache-control` را پیکربندی کنید تا بهبود عملکرد در بازدیدهای تکراری داشته باشید.
گزینههایی مانند _Auto Minify_ را برای کد HTML فعال نکنید. این گزینهها ممکن است توضیحاتی را که به Vue معنا دارد، از خروجی حذف کنند. ممکن است خطاهای ناسازگاری را در اجرا ببینید اگر حذف شوند.
گزینههایی مانند _Auto Minify_ را برای کد HTML فعال نکنید. این گزینهها ممکن است توضیحاتی را که به Vue معنا دارد، از خروجی حذف کنند. ممکن است خطاهای ناسازگاری را در اجرا ببینید اگر حذف شوند.
:::
:::
### صفحات GitHub
### صفحات GitHub {#github-pages}
1. یک فایل به نام `deploy.yml` در دایرکتوری `.github/workflows` پروژه خود ایجاد کنید با محتوایی مانند زیر:
1. یک فایل به نام `deploy.yml` در دایرکتوری `.github/workflows` پروژه خود ایجاد کنید با محتوایی مانند زیر:
3. تغییرات خود را به شاخه `main` ارسال کنید و منتظر GitHub Actions workflow بمانید. شما باید وبسایت خود را در `https://<username>.github.io/[repository]/` یا `https://<custom-domain>/` بسته به تنظیمات خود دیده شده است. وبسایت شما بهطور خودکار در هر بار فشردهسازی به شاخه `main` ارسال میشود.
3. تغییرات خود را به شاخه `main` ارسال کنید و منتظر GitHub Actions workflow بمانید. شما باید وبسایت خود را در `https://<username>.github.io/[repository]/` یا `https://<custom-domain>/` بسته به تنظیمات خود دیده شده است. وبسایت شما بهطور خودکار در هر بار فشردهسازی به شاخه `main` ارسال میشود.
### صفحات GitLab
### صفحات GitLab{#gitlab-pages}
1. `outDir` را در پیکربندی ویتپرس به `../public` تنظیم کنید. گزینه `base` را به `'/<repository>/'` تنظیم کنید اگر میخواهید در `https://<username>.gitlab.io/<repository>/` انتشار دهید.
1. `outDir` را در پیکربندی ویتپرس به `../public` تنظیم کنید. گزینه `base` را به `'/<repository>/'` تنظیم کنید اگر میخواهید در `https://<username>.gitlab.io/<repository>/` انتشار دهید.
به [ایجاد و انتشار یک برنامه ویتپرس در Edgio](https://docs.edg.io/guides/vitepress) مراجعه کنید.
به [ایجاد و انتشار یک برنامه ویتپرس در Edgio](https://docs.edg.io/guides/vitepress) مراجعه کنید.
### Kinsta Static Site Hosting
### Kinsta Static Site Hosting {#kinsta-static-site-hosting}
شما میتوانید وبسایت ویتپرس خود را بر روی [Kinsta](https://kinsta.com/static-site-hosting/) با دنبال کردن این [دستورالعملها](https://kinsta.com/docs/vitepress-static-site-example/) انتشار دهید.
شما میتوانید وبسایت ویتپرس خود را بر روی [Kinsta](https://kinsta.com/static-site-hosting/) با دنبال کردن این [دستورالعملها](https://kinsta.com/docs/vitepress-static-site-example/) انتشار دهید.
تم پیشفرض ویتپرس برای مستندات بهینهسازی شده است و قابلیت سفارشیسازی دارد. برای دریافت لیست جامع گزینهها، به [نمای کلی از تنظیمات تم پیشفرض](../reference/default-theme-config) مراجعه کنید.
تم پیشفرض ویتپرس برای مستندات بهینهسازی شده است و قابلیت سفارشیسازی دارد. برای دریافت لیست جامع گزینهها، به [نمای کلی از تنظیمات تم پیشفرض](../reference/default-theme-config) مراجعه کنید.
@ -18,7 +18,7 @@ outline: deep
قبل از ادامه، ابتدا [استفاده از یک تم سفارشی](./custom-theme) را بخوانید تا نحوه کار تمهای سفارشی را درک کنید.
قبل از ادامه، ابتدا [استفاده از یک تم سفارشی](./custom-theme) را بخوانید تا نحوه کار تمهای سفارشی را درک کنید.
:::
:::
## سفارشیسازی CSS
## سفارشیسازی CSS {#customizing-css}
CSS تم پیشفرض با نادیده گرفتن متغیرهای CSS سطح ریشه قابل سفارشیسازی است:
CSS تم پیشفرض با نادیده گرفتن متغیرهای CSS سطح ریشه قابل سفارشیسازی است:
@ -40,7 +40,7 @@ export default DefaultTheme
لیست متغیرهای CSS [تم پیشفرض](https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css) که میتوانند سفارشیسازی شوند را ببینید.
لیست متغیرهای CSS [تم پیشفرض](https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css) که میتوانند سفارشیسازی شوند را ببینید.
## استفاده از فونتهای مختلف
## استفاده از فونتهای مختلف{#using-different-fonts}
ویتپرس از [Inter](https://rsms.me/inter/) به عنوان فونت پیشفرض استفاده میکند و فونتها را در خروجی ساختهشده شامل میشود. این فونت همچنین در محصولات خودکار پیشبارگذاری میشود. با این حال، این ممکن است مطلوب نباشد اگر میخواهید از یک فونت اصلی مختلف استفاده کنید.
ویتپرس از [Inter](https://rsms.me/inter/) به عنوان فونت پیشفرض استفاده میکند و فونتها را در خروجی ساختهشده شامل میشود. این فونت همچنین در محصولات خودکار پیشبارگذاری میشود. با این حال، این ممکن است مطلوب نباشد اگر میخواهید از یک فونت اصلی مختلف استفاده کنید.
از آنجا که از Vite استفاده میکنیم، میتوانید از ویژگی [import glob](https://vitejs.dev/guide/features.html#glob-import) در Vite برای خودکار ثبت یک پوشه از مولفهها استفاده کنید.
از آنجا که از Vite استفاده میکنیم، میتوانید از ویژگی [import glob](https://vitejs.dev/guide/features.html#glob-import) در Vite برای خودکار ثبت یک پوشه از مولفهها استفاده کنید.
## slot های طرح
## slot های طرح {#layout-slots}
کامپوننت `<Layout/>` تم پیشفرض چندین slot دارد که میتوانید محتوا را در موقعیتهای مختلف صفحه در آنها درج کنید. در زیر مثالی از درج یک کامپوننت در قبل از طرح داده شده است:
کامپوننت `<Layout/>` تم پیشفرض چندین slot دارد که میتوانید محتوا را در موقعیتهای مختلف صفحه در آنها درج کنید. در زیر مثالی از درج یک کامپوننت در قبل از طرح داده شده است:
@ -220,9 +220,9 @@ export default {
- `nav-screen-content-after`
- `nav-screen-content-after`
## استفاده از API انتقال نمایش
## استفاده از API انتقال نمایش {#using-view-transitions-api}
### در تغییر ظاهر
### در تغییر ظاهر {#on-appearance-toggle}
شما میتوانید تم پیشفرض را گسترش دهید تا هنگام تغییر حالت رنگ، یک انتقال سفارشی را فراهم کند. به عنوان مثال:
شما میتوانید تم پیشفرض را گسترش دهید تا هنگام تغییر حالت رنگ، یک انتقال سفارشی را فراهم کند. به عنوان مثال:
شما میتوانید با استفاده از [alias های Vite](https://vitejs.dev/config/shared-options.html#resolve-alias)، کامپوننتهای تم پیشفرض را با کامپوننتهای سفارشی خود جایگزین کنید:
شما میتوانید با استفاده از [alias های Vite](https://vitejs.dev/config/shared-options.html#resolve-alias)، کامپوننتهای تم پیشفرض را با کامپوننتهای سفارشی خود جایگزین کنید:
ویتپرس پشتیبانی از frontmatter YAML در تمام فایلهای Markdown را دارد و آنها را با استفاده از [gray-matter](https://github.com/jonschlinkert/gray-matter) تجزیه میکند. Frontmatter باید در بالای فایل Markdown قرار داشته باشد (قبل از هر عنصر از جمله برچسبهای `<script>`) و باید به صورت YAML معتبر واقع در بین خطوط خط کشیده شود. به عنوان مثال:
ویتپرس پشتیبانی از frontmatter YAML در تمام فایلهای Markdown را دارد و آنها را با استفاده از [gray-matter](https://github.com/jonschlinkert/gray-matter) تجزیه میکند. Frontmatter باید در بالای فایل Markdown قرار داشته باشد (قبل از هر عنصر از جمله برچسبهای `<script>`) و باید به صورت YAML معتبر واقع در بین خطوط خط کشیده شود. به عنوان مثال:
@ -15,7 +15,7 @@ editLink: true
همچنین میتوانید دادههای اختصاصی frontmatter خود را تعریف کنید تا در بیانیههای پویا Vue در صفحه استفاده شود.
همچنین میتوانید دادههای اختصاصی frontmatter خود را تعریف کنید تا در بیانیههای پویا Vue در صفحه استفاده شود.
## دسترسی به دادههای Frontmatter
## دسترسی به دادههای Frontmatter {#accessing-frontmatter-data}
دادههای frontmatter میتوانند از طریق متغیر global ویژه `$frontmatter` دسترسی داشته باشند:
دادههای frontmatter میتوانند از طریق متغیر global ویژه `$frontmatter` دسترسی داشته باشند:
@ -34,7 +34,7 @@ editLink: true
شما همچنین میتوانید دادههای frontmatter صفحه فعلی را در `<script setup>` با استفاده از راهنمای [`useData()`](../reference/runtime-api#usedata) به دست آورید.
شما همچنین میتوانید دادههای frontmatter صفحه فعلی را در `<script setup>` با استفاده از راهنمای [`useData()`](../reference/runtime-api#usedata) به دست آورید.
میتوانید ویتپرس را مستقیماً در مرورگر خود در [StackBlitz](https://vitepress.new) امتحان کنید.
میتوانید ویتپرس را مستقیماً در مرورگر خود در [StackBlitz](https://vitepress.new) امتحان کنید.
## نصب
## نصب{#installation}
### پیشنیازها
### پیشنیازها{#prerequisites}
- [Node.js](https://nodejs.org/) نسخه 18 یا بالاتر.
- [Node.js](https://nodejs.org/) نسخه 18 یا بالاتر.
- ترمینال برای دسترسی به ویتپرس از طریق رابط خط فرمان (CLI).
- ترمینال برای دسترسی به ویتپرس از طریق رابط خط فرمان (CLI).
@ -96,7 +96,7 @@ $ bun vitepress init
:::
:::
## ساختار فایلها
## ساختار فایلها{#file-structure}
اگر در حال ساخت یک سایت مستقل ویتپرس هستید، میتوانید سایت را در دایرکتوری فعلی خود (`./`) بسازید. اما، اگر ویتپرس را در یک پروژه موجود به همراه سایر کدهای منبع نصب میکنید، توصیه میشود سایت را در یک دایرکتوری تودرتو (مثلاً `./docs`) بسازید تا از بقیه پروژه جدا باشد.
اگر در حال ساخت یک سایت مستقل ویتپرس هستید، میتوانید سایت را در دایرکتوری فعلی خود (`./`) بسازید. اما، اگر ویتپرس را در یک پروژه موجود به همراه سایر کدهای منبع نصب میکنید، توصیه میشود سایت را در یک دایرکتوری تودرتو (مثلاً `./docs`) بسازید تا از بقیه پروژه جدا باشد.
@ -121,7 +121,7 @@ $ bun vitepress init
:::
:::
### فایل پیکربندی
### فایل پیکربندی{#the-config-file}
فایل پیکربندی (`.vitepress/config.js`) به شما اجازه میدهد جنبههای مختلف سایت ویتپرس خود را سفارشی کنید، با گزینههای پایهای مانند عنوان و توضیحات سایت:
فایل پیکربندی (`.vitepress/config.js`) به شما اجازه میدهد جنبههای مختلف سایت ویتپرس خود را سفارشی کنید، با گزینههای پایهای مانند عنوان و توضیحات سایت:
@ -140,7 +140,7 @@ export default {
همچنین میتوانید رفتار تم را از طریق گزینه `themeConfig` پیکربندی کنید. برای جزئیات کامل درباره همه گزینههای پیکربندی، به [راهنمای پیکربندی](../reference/site-config) مراجعه کنید.
همچنین میتوانید رفتار تم را از طریق گزینه `themeConfig` پیکربندی کنید. برای جزئیات کامل درباره همه گزینههای پیکربندی، به [راهنمای پیکربندی](../reference/site-config) مراجعه کنید.
### فایلهای منبع
### فایلهای منبع{#source-files}
فایلهای Markdown خارج از دایرکتوری `.vitepress` به عنوان **فایلهای منبع** در نظر گرفته میشوند.
فایلهای Markdown خارج از دایرکتوری `.vitepress` به عنوان **فایلهای منبع** در نظر گرفته میشوند.
@ -148,7 +148,7 @@ export default {
ویتپرس همچنین قابلیت تولید URLهای تمیز، بازنویسی مسیرها و تولید پویا صفحات را فراهم میکند. این موارد در [راهنمای مسیر یابی](./routing) پوشش داده خواهند شد.
ویتپرس همچنین قابلیت تولید URLهای تمیز، بازنویسی مسیرها و تولید پویا صفحات را فراهم میکند. این موارد در [راهنمای مسیر یابی](./routing) پوشش داده خواهند شد.
## راهاندازی و اجرا
## راهاندازی و اجرا {#up-and-running}
این ابزار باید اسکریپتهای npm زیر را به `package.json` شما اضافه کرده باشد اگر اجازه این کار را در طول فرآیند راهاندازی داده باشید:
این ابزار باید اسکریپتهای npm زیر را به `package.json` شما اضافه کرده باشد اگر اجازه این کار را در طول فرآیند راهاندازی داده باشید:
@ -212,7 +212,7 @@ $ bun vitepress dev docs
سرور توسعه باید در `http://localhost:5173` اجرا شود. URL را در مرورگر خود بازدید کنید تا سایت جدید خود را در عمل ببینید!
سرور توسعه باید در `http://localhost:5173` اجرا شود. URL را در مرورگر خود بازدید کنید تا سایت جدید خود را در عمل ببینید!
## مراحل بعدی
## مراحل بعدی{#what-s-next}
- برای درک بهتر چگونگی نگاشت فایلهای markdown به HTML تولید شده، به [راهنمای مسیر یابی](./routing) مراجعه کنید.
- برای درک بهتر چگونگی نگاشت فایلهای markdown به HTML تولید شده، به [راهنمای مسیر یابی](./routing) مراجعه کنید.
**نکته حرفهای:** فایل پیکربندی را میتوانید در `docs/.vitepress/config/index.ts` نیز ذخیره کنید. این کار به شما کمک میکند که با ایجاد یک فایل پیکربندی برای هر زبان و سپس ادغام و صدور آنها از `index.ts`، موارد را سازماندهی کنید.
**نکته حرفهای:** فایل پیکربندی را میتوانید در `docs/.vitepress/config/index.ts` نیز ذخیره کنید. این کار به شما کمک میکند که با ایجاد یک فایل پیکربندی برای هر زبان و سپس ادغام و صدور آنها از `index.ts`، موارد را سازماندهی کنید.
## دایرکتوری جداگانه برای هر زبان
## دایرکتوری جداگانه برای هر زبان{#separate-directory-for-each-locale}
ساختار زیر به طور کاملاً صحیح است:
ساختار زیر به طور کاملاً صحیح است:
@ -108,6 +108,6 @@ watchEffect(() => {
</template>
</template>
```
```
## پشتیبانی از RTL (آزمایشی)
## پشتیبانی از RTL (آزمایشی){#rtl-support-experimental}
برای پشتیبانی از RTL، `dir: 'rtl'` را در پیکربندی مشخص کنید و از پلاگینهای PostCSS RTLCSS مانند <https://github.com/MohammadYounes/rtlcss>، <https://github.com/vkalinichev/postcss-rtl> یا <https://github.com/elchininet/postcss-rtlcss> استفاده کنید. باید پلاگین PostCSS خود را به کارگیری `:where([dir="ltr"])` و `:where([dir="rtl"])` به عنوان پیشوندها جلوگیری از مشکلات اولویت CSS استفاده کنید.
برای پشتیبانی از RTL، `dir: 'rtl'` را در پیکربندی مشخص کنید و از پلاگینهای PostCSS RTLCSS مانند <https://github.com/MohammadYounes/rtlcss>، <https://github.com/vkalinichev/postcss-rtl> یا <https://github.com/elchininet/postcss-rtlcss> استفاده کنید. باید پلاگین PostCSS خود را به کارگیری `:where([dir="ltr"])` و `:where([dir="rtl"])` به عنوان پیشوندها جلوگیری از مشکلات اولویت CSS استفاده کنید.
ویتپرس با افزونههای markdown داخلی ارائه شده است.
ویتپرس با افزونههای markdown داخلی ارائه شده است.
## لینکهای هدر
## لینکهای هدر {#header-anchors}
هدرها به طور خودکار لینکهای anchor دریافت میکنند. نمایش anchor ها با استفاده از گزینه `markdown.anchor` قابل پیکربندی است.
هدرها به طور خودکار لینکهای anchor دریافت میکنند. نمایش anchor ها با استفاده از گزینه `markdown.anchor` قابل پیکربندی است.
### anchor های سفارشی
### anchor های سفارشی {#custom-anchors}
برای مشخص کردن تگ anchor سفارشی برای یک هدینگ به جای استفاده از تگ خودکار، یک پسوند به هدینگ اضافه کنید:
برای مشخص کردن تگ anchor سفارشی برای یک هدینگ به جای استفاده از تگ خودکار، یک پسوند به هدینگ اضافه کنید:
@ -16,11 +16,11 @@
این به شما امکان میدهد که به جای استفاده از به جای استفاده از `#using-custom-anchors`، به هدینگ به عنوان `#my-anchor` لینک دهید.
این به شما امکان میدهد که به جای استفاده از به جای استفاده از `#using-custom-anchors`، به هدینگ به عنوان `#my-anchor` لینک دهید.
## لینکها
## لینکها{#links}
هم لینکهای داخلی و هم خارجی با دستورالعملهای خاصی ارائه میشوند.
هم لینکهای داخلی و هم خارجی با دستورالعملهای خاصی ارائه میشوند.
### لینکهای داخلی
### لینکهای داخلی {#internal-links}
لینکهای داخلی به لینک روتر برای ناوبری SPA تبدیل میشوند. همچنین، هر `index.md` موجود در هر زیرپوشه به طور خودکار به `index.html` تبدیل میشود، با URL متناظر `/`.
لینکهای داخلی به لینک روتر برای ناوبری SPA تبدیل میشوند. همچنین، هر `index.md` موجود در هر زیرپوشه به طور خودکار به `index.html` تبدیل میشود، با URL متناظر `/`.
@ -50,18 +50,18 @@
[bar - four](../bar/four.html) <!-- or you can append .html -->
[bar - four](../bar/four.html) <!-- or you can append .html -->
```
```
### پسوند صفحه
### پسوند صفحه {#page-suffix}
صفحات و لینکهای داخلی به طور پیشفرض با پسوند `.html` تولید میشوند.
صفحات و لینکهای داخلی به طور پیشفرض با پسوند `.html` تولید میشوند.
### لینکهای خارجی
### لینکهای خارجی{#external-links}
لینکهای خروجی به طور خودکار دارای `target="_blank" rel="noreferrer"` هستند:
لینکهای خروجی به طور خودکار دارای `target="_blank" rel="noreferrer"` هستند:
- [vuejs.org](https://vuejs.org)
- [vuejs.org](https://vuejs.org)
- [ویتپرس در GitHub](https://github.com/vuejs/vitepress)
- [ویتپرس در GitHub](https://github.com/vuejs/vitepress)
## Frontmatter
## Frontmatter {#frontmatter}
[YAML frontmatter](https://jekyllrb.com/docs/front-matter/) به طور پیشفرض پشتیبانی میشود:
[YAML frontmatter](https://jekyllrb.com/docs/front-matter/) به طور پیشفرض پشتیبانی میشود:
@ -76,7 +76,7 @@ lang: fa-IR
برای اطلاعات بیشتر، به [Frontmatter](../reference/frontmatter-config) مراجعه کنید.
برای اطلاعات بیشتر، به [Frontmatter](../reference/frontmatter-config) مراجعه کنید.
## جداول مانند Github
## جداول مانند Github {#github-style-tables}
**ورودی**
**ورودی**
@ -96,7 +96,7 @@ lang: fa-IR
| col 2 is | centered | $12 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
| zebra stripes | are neat | $1 |
## اموجی :tada:
## اموجی :tada: {#emoji}
**ورودی**
**ورودی**
@ -110,7 +110,7 @@ lang: fa-IR
یک [لیست از همه اموجی ها](https://github.com/markdown-it/markdown-it-emoji/blob/master/lib/data/full.mjs) در دسترس است.
یک [لیست از همه اموجی ها](https://github.com/markdown-it/markdown-it-emoji/blob/master/lib/data/full.mjs) در دسترس است.
## فهرست مطالب
## فهرست مطالب {#table-of-contents}
**ورودی**
**ورودی**
@ -124,11 +124,11 @@ lang: fa-IR
نحوه پردازش فهرست مطالب با استفاده از گزینه `markdown.toc` قابل پیکربندی است.
نحوه پردازش فهرست مطالب با استفاده از گزینه `markdown.toc` قابل پیکربندی است.
## کانتینرهای سفارشی
## کانتینرهای سفارشی{#custom-containers}
کانتینرهای سفارشی میتوانند توسط انواع، عناوین و محتویات خود تعریف شوند.
کانتینرهای سفارشی میتوانند توسط انواع، عناوین و محتویات خود تعریف شوند.
### عنوان پیشفرض
### عنوان پیشفرض {#default-title}
**ورودی**
**ورودی**
@ -176,7 +176,7 @@ lang: fa-IR
این یک بلوک جزئیات است.
این یک بلوک جزئیات است.
:::
:::
### عنوان سفارشی
### عنوان سفارشی {#custom-title}
میتوانید عنوان سفارشی را با اضافه کردن متن به انتهای نوع کانتینر تنظیم کنید.
میتوانید عنوان سفارشی را با اضافه کردن متن به انتهای نوع کانتینر تنظیم کنید.
@ -225,7 +225,7 @@ export default defineConfig({
})
})
```
```
### `raw`
### `raw` {#raw}
این یک کانتینر ویژه است که میتواند برای جلوگیری از تداخل استایل و روتر با ویتپرس استفاده شود. این به ویژه زمانی مفید است که شما کتابخانههای کامپوننت را مستند کنید. میتوانید همچنین [whyframe](https://whyframe.dev/docs/integrations/vitepress) را برای ایزولهتر شدن بیشتر بررسی کنید.
این یک کانتینر ویژه است که میتواند برای جلوگیری از تداخل استایل و روتر با ویتپرس استفاده شود. این به ویژه زمانی مفید است که شما کتابخانههای کامپوننت را مستند کنید. میتوانید همچنین [whyframe](https://whyframe.dev/docs/integrations/vitepress) را برای ایزولهتر شدن بیشتر بررسی کنید.
@ -263,7 +263,7 @@ export default defineConfig({
})
})
```
```
## هشدارهای GitHub
## هشدارهای GitHub {#github-flavored-alerts}
ویتپرس همچنین [هشدارهای GitHub](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts) را برای نمایش به عنوان تماسها پشتیبانی میکند. آنها به همان شکلی که [کانتینرهای سفارشی](#custom-containers) نمایش داده میشوند.
ویتپرس همچنین [هشدارهای GitHub](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts) را برای نمایش به عنوان تماسها پشتیبانی میکند. آنها به همان شکلی که [کانتینرهای سفارشی](#custom-containers) نمایش داده میشوند.
@ -299,7 +299,7 @@ export default defineConfig({
> [!CAUTION]
> [!CAUTION]
> پیامدهای منفی احتمالی یک عمل.
> پیامدهای منفی احتمالی یک عمل.
## Syntax Highlighting در بلوکهای کد
## Syntax Highlighting در بلوکهای کد {#syntax-highlighting-in-code-blocks}
ویتپرس از [Shiki](https://github.com/shikijs/shiki) برای syntax highlighting زبان در بلوکهای کد Markdown با استفاده از متن رنگی استفاده میکند. Shiki از تنوع وسیعی از زبانهای برنامهنویسی پشتیبانی میکند. تنها کافی است که یک نام مستعار زبان معتبر به بکتیکها ابتدایی کد اضافه کنید:
ویتپرس از [Shiki](https://github.com/shikijs/shiki) برای syntax highlighting زبان در بلوکهای کد Markdown با استفاده از متن رنگی استفاده میکند. Shiki از تنوع وسیعی از زبانهای برنامهنویسی پشتیبانی میکند. تنها کافی است که یک نام مستعار زبان معتبر به بکتیکها ابتدایی کد اضافه کنید:
@ -345,7 +345,7 @@ export default {
همچنین میتوانید تم syntax highlighting را در تنظیمات برنامه سفارشی کنید. لطفاً به [گزینههای Markdown](../reference/site-config#markdown) برای جزئیات بیشتر مراجعه کنید.
همچنین میتوانید تم syntax highlighting را در تنظیمات برنامه سفارشی کنید. لطفاً به [گزینههای Markdown](../reference/site-config#markdown) برای جزئیات بیشتر مراجعه کنید.
## برجستهسازی خطوط در بلوکهای کد
## برجستهسازی خطوط در بلوکهای کد {#line-highlighting-in-code-blocks}
میتوانید یک فایل Markdown را در یک فایل Markdown دیگر، حتی در صورت وجود تو در تو، وارد کنید.
میتوانید یک فایل Markdown را در یک فایل Markdown دیگر، حتی در صورت وجود تو در تو، وارد کنید.
@ -828,7 +828,7 @@ export default config
توجه داشته باشید که این اقدام منجر به خطا نمیشود اگر فایل شما وجود نداشته باشد. بنابراین، در استفاده از این ویژگی، مطمئن شوید که محتوا به درستی نمایش داده میشود.
توجه داشته باشید که این اقدام منجر به خطا نمیشود اگر فایل شما وجود نداشته باشد. بنابراین، در استفاده از این ویژگی، مطمئن شوید که محتوا به درستی نمایش داده میشود.
:::
:::
## معادلات ریاضی
## معادلات ریاضی {#math-equations}
در حال حاضر این گزینه اختیاری است. برای فعالسازی آن، باید `markdown-it-mathjax3` را نصب کرده و `markdown.math` را در فایل پیکربندی خود به `true` تنظیم کنید:
در حال حاضر این گزینه اختیاری است. برای فعالسازی آن، باید `markdown-it-mathjax3` را نصب کرده و `markdown.math` را در فایل پیکربندی خود به `true` تنظیم کنید:
میتوانید بارگذاری تنبلی را برای هر تصویر اضافه شده از طریق Markdown با تنظیم `lazyLoading` به `true` در فایل پیکربندی فعال کنید:
میتوانید بارگذاری تنبلی را برای هر تصویر اضافه شده از طریق Markdown با تنظیم `lazyLoading` به `true` در فایل پیکربندی فعال کنید:
@ -890,7 +890,7 @@ export default {
}
}
```
```
## پیکربندی پیشرفته
## پیکربندی پیشرفته {#advanced-configuration}
ویتپرس از [markdown-it](https://github.com/markdown-it/markdown-it) به عنوان نمایشگر Markdown استفاده میکند. اکثر افزونههای فوق را با استفاده از افزونههای سفارشی پیادهسازی کردهایم. میتوانید نمونهای بیشتر از نمونه `markdown-it` را با استفاده از گزینه `markdown` در `.vitepress/config.js` سفارشیسازی کنید:
ویتپرس از [markdown-it](https://github.com/markdown-it/markdown-it) به عنوان نمایشگر Markdown استفاده میکند. اکثر افزونههای فوق را با استفاده از افزونههای سفارشی پیادهسازی کردهایم. میتوانید نمونهای بیشتر از نمونه `markdown-it` را با استفاده از گزینه `markdown` در `.vitepress/config.js` سفارشیسازی کنید:
ویتپرس از مسیریابی مبتنی بر فایل استفاده میکند که به این معنی است که صفحات HTML تولید شده از ساختار دایرکتوری فایلهای Markdown منبع نقشهبندی میشوند. به عنوان مثال، با توجه به ساختار دایرکتوری زیر:
ویتپرس از مسیریابی مبتنی بر فایل استفاده میکند که به این معنی است که صفحات HTML تولید شده از ساختار دایرکتوری فایلهای Markdown منبع نقشهبندی میشوند. به عنوان مثال، با توجه به ساختار دایرکتوری زیر:
این صفحات HTML نهایی میتوانند بر روی هر سرور وبی که قادر به ارائه فایلهای ایستا است، میزبانی شوند.
این صفحات HTML نهایی میتوانند بر روی هر سرور وبی که قادر به ارائه فایلهای ایستا است، میزبانی شوند.
## ریشه و دایرکتوری منبع
## ریشه و دایرکتوری منبع{#root-and-source-directory}
در ساختار فایل پروژه ویتپرس، دو مفهوم مهم وجود دارد: **ریشه پروژه** و **دایرکتوری منبع**.
در ساختار فایل پروژه ویتپرس، دو مفهوم مهم وجود دارد: **ریشه پروژه** و **دایرکتوری منبع**.
### ریشه پروژه
### ریشه پروژه{#project-root}
ریشه پروژه جایی است که ویتپرس سعی میکند برای دایرکتوری ویژه `.vitepress` را بررسی کند. دایرکتوری `.vitepress` مکانی رزرو شده برای فایل پیکربندی، حافظه نهان سرور توسعه، خروجی ساخت، و کد سفارشیسازی موضوع اختیاری ویتپرس است.
ریشه پروژه جایی است که ویتپرس سعی میکند برای دایرکتوری ویژه `.vitepress` را بررسی کند. دایرکتوری `.vitepress` مکانی رزرو شده برای فایل پیکربندی، حافظه نهان سرور توسعه، خروجی ساخت، و کد سفارشیسازی موضوع اختیاری ویتپرس است.
@ -58,7 +58,7 @@ docs/index.md --> /index.html (قابل دسترس به عنوان /
docs/getting-started.md --> /getting-started.html
docs/getting-started.md --> /getting-started.html
```
```
### دایرکتوری منبع
### دایرکتوری منبع{#source-directory}
دایرکتوری منبع جایی است که فایلهای منبع Markdown شما قرار میگیرند. به طور پیشفرض، این همانند ریشه پروژه است. با این حال، شما میتوانید آن را از طریق گزینه [`srcDir`](../reference/site-config#srcdir) پیکربندی کنید.
دایرکتوری منبع جایی است که فایلهای منبع Markdown شما قرار میگیرند. به طور پیشفرض، این همانند ریشه پروژه است. با این حال، شما میتوانید آن را از طریق گزینه [`srcDir`](../reference/site-config#srcdir) پیکربندی کنید.
@ -79,7 +79,7 @@ src/index.md --> /index.html (قابل دسترس به عنوان /)
src/getting-started.md --> /getting-started.html
src/getting-started.md --> /getting-started.html
```
```
## لینکدهی بین صفحات
## لینکدهی بین صفحات{#linking-between-pages}
میتوانید هنگام لینکدهی بین صفحات از مسیرهای نسبی و مطلق استفاده کنید. توجه داشته باشید که با اینکه هر دو پسوند `.md` و `.html` کار میکنند، بهتر است که پسوندها را حذف کنید تا ویتپرس بتواند URLهای نهایی را بر اساس پیکربندی شما تولید کند.
میتوانید هنگام لینکدهی بین صفحات از مسیرهای نسبی و مطلق استفاده کنید. توجه داشته باشید که با اینکه هر دو پسوند `.md` و `.html` کار میکنند، بهتر است که پسوندها را حذف کنید تا ویتپرس بتواند URLهای نهایی را بر اساس پیکربندی شما تولید کند.
جهت آشنایی بیشتر با لینکدهی به منابع مانند تصاویر به [مدیریت منابع](./asset-handling) مراجعه کنید.
جهت آشنایی بیشتر با لینکدهی به منابع مانند تصاویر به [مدیریت منابع](./asset-handling) مراجعه کنید.
### لینکدهی به صفحات غیر ویتپرس
### لینکدهی به صفحات غیر ویتپرس{#linking-to-non-vitepress-pages}
اگر میخواهید به یک صفحه در وبسایت خود لینک دهید که توسط ویتپرس تولید نشده است، باید یا از URL کامل (باز میشود در یک تب جدید) استفاده کنید، یا هدف را به طور صریح مشخص کنید:
اگر میخواهید به یک صفحه در وبسایت خود لینک دهید که توسط ویتپرس تولید نشده است، باید یا از URL کامل (باز میشود در یک تب جدید) استفاده کنید، یا هدف را به طور صریح مشخص کنید:
میتوانید نقشهبندی بین ساختار دایرکتوری منبع و صفحات تولید شده را سفارشیسازی کنید. این ویژگی وقتی مفید است که یک ساختار پروژه پیچیده داشته باشید. به عنوان مثال، فرض کنید یک مونورپو با چند بسته دارید و میخواهید مستندات را همراه با فایلهای منبع قرار دهید مانند این:
میتوانید نقشهبندی بین ساختار دایرکتوری منبع و صفحات تولید شده را سفارشیسازی کنید. این ویژگی وقتی مفید است که یک ساختار پروژه پیچیده داشته باشید. به عنوان مثال، فرض کنید یک مونورپو با چند بسته دارید و میخواهید مستندات را همراه با فایلهای منبع قرار دهید مانند این:
@ -209,11 +209,11 @@ export default {
```
```
:::
:::
## مسیرهای پویا
## مسیرهای پویا{#dynamic-routes}
میتوانید صفحات زیادی را با استفاده از یک فایل Markdown و دادههای پویا تولید کنید. به عنوان مثال، میتوانید یک فایل `packages/[pkg].md` ایجاد کنید که برای هر بسته در یک پروژه، یک صفحه متناظر تولید میکند. در اینجا، بخش `[pkg]` یک پارامتر مسیر است که هر صفحه را از دیگران تمایز میدهد.
میتوانید صفحات زیادی را با استفاده از یک فایل Markdown و دادههای پویا تولید کنید. به عنوان مثال، میتوانید یک فایل `packages/[pkg].md` ایجاد کنید که برای هر بسته در یک پروژه، یک صفحه متناظر تولید میکند. در اینجا، بخش `[pkg]` یک پارامتر مسیر است که هر صفحه را از دیگران تمایز میدهد.
### فایل بارگیری مسیرها
### فایل بارگیری مسیرها{#paths-loader-file}
از آنجایی که ویتپرس یک موتور سایت ایستا است، مسیرهای ممکن باید در زمان ساخت تعیین شوند. بنابراین، یک صفحه مسیر پویا باید همراه با یک **فایل بارگیری مسیرها** همراه باشد. برای `packages/[pkg].md`، به `packages/[pkg].paths.js` (همچنین `.ts` پشتیبانی میشود) نیاز داریم:
از آنجایی که ویتپرس یک موتور سایت ایستا است، مسیرهای ممکن باید در زمان ساخت تعیین شوند. بنابراین، یک صفحه مسیر پویا باید همراه با یک **فایل بارگیری مسیرها** همراه باشد. برای `packages/[pkg].md`، به `packages/[pkg].paths.js` (همچنین `.ts` پشتیبانی میشود) نیاز داریم:
@ -251,7 +251,7 @@ export default {
└─ bar.html
└─ bar.html
```
```
### چندین پارامتر
### چندین پارامتر {#multiple-params}
یک مسیر پویا میتواند شامل چندین پارامتر باشد:
یک مسیر پویا میتواند شامل چندین پارامتر باشد:
@ -288,7 +288,7 @@ export default {
└─ bar-2.0.0.html
└─ bar-2.0.0.html
```
```
### تولید پویای مسیرها
### تولید پویای مسیرها{#dynamically-generating-paths}
ماژول بارگیری مسیر در Node.js اجرا میشود و تنها در زمان ساخت اجرا میشود. شما میتوانید آرایهی مسیرها را با استفاده از هر دادهای، سطحی یا از راه دور، به صورت پویا تولید کنید.
ماژول بارگیری مسیر در Node.js اجرا میشود و تنها در زمان ساخت اجرا میشود. شما میتوانید آرایهی مسیرها را با استفاده از هر دادهای، سطحی یا از راه دور، به صورت پویا تولید کنید.
@ -327,7 +327,7 @@ export default {
}
}
```
```
### دسترسی به پارامترها در صفحه
### دسترسی به پارامترها در صفحه{#accessing-params-in-page}
شما میتوانید از پارامترها برای انتقال دادههای اضافی به هر صفحه استفاده کنید. فایل مسیر Markdown میتواند از پارامترهای صفحه کنونی در عبارات Vue با استفاده از خاصیت `$params` global استفاده کند:
شما میتوانید از پارامترها برای انتقال دادههای اضافی به هر صفحه استفاده کنید. فایل مسیر Markdown میتواند از پارامترهای صفحه کنونی در عبارات Vue با استفاده از خاصیت `$params` global استفاده کند:
@ -349,7 +349,7 @@ console.log(params.value)
</script>
</script>
```
```
### نمایش محتوای خام
### نمایش محتوای خام{#rendering-raw-content}
پارامترهای ارسال شده به صفحه در بارگذاری JavaScript کلاینت سریال میشوند، بنابراین باید از ارسال دادههای سنگین در پارامترها خودداری کنید، برای مثال محتوای خام Markdown یا HTML از یک CMS از راه دور.
پارامترهای ارسال شده به صفحه در بارگذاری JavaScript کلاینت سریال میشوند، بنابراین باید از ارسال دادههای سنگین در پارامترها خودداری کنید، برای مثال محتوای خام Markdown یا HTML از یک CMS از راه دور.
ویتپرس با پشتیبانی بیرونی برای تولید فایل `sitemap.xml` برای سایت شما ارائه میشود. برای فعالسازی آن، موارد زیر را به فایل `.vitepress/config.js` خود اضافه کنید:
ویتپرس با پشتیبانی بیرونی برای تولید فایل `sitemap.xml` برای سایت شما ارائه میشود. برای فعالسازی آن، موارد زیر را به فایل `.vitepress/config.js` خود اضافه کنید:
@ -12,7 +12,7 @@ export default {
برای داشتن تگهای `<lastmod>` در فایل `sitemap.xml` خود، میتوانید گزینه [`lastUpdated`](../reference/default-theme-last-updated) را فعال کنید.
برای داشتن تگهای `<lastmod>` در فایل `sitemap.xml` خود، میتوانید گزینه [`lastUpdated`](../reference/default-theme-last-updated) را فعال کنید.
## گزینهها
## گزینهها{#options}
پشتیبانی از sitemap توسط ماژول [`sitemap`](https://www.npmjs.com/package/sitemap) ارائه شده است. میتوانید هر گزینهای که توسط این ماژول پشتیبانی میشود را به گزینه `sitemap` در فایل پیکربندی خود منتقل کنید. این گزینهها به طور مستقیم به سازنده `SitemapStream` منتقل میشوند. برای جزئیات بیشتر به [مستندات sitemap](https://www.npmjs.com/package/sitemap#options-you-can-pass) مراجعه کنید. مثال:
پشتیبانی از sitemap توسط ماژول [`sitemap`](https://www.npmjs.com/package/sitemap) ارائه شده است. میتوانید هر گزینهای که توسط این ماژول پشتیبانی میشود را به گزینه `sitemap` در فایل پیکربندی خود منتقل کنید. این گزینهها به طور مستقیم به سازنده `SitemapStream` منتقل میشوند. برای جزئیات بیشتر به [مستندات sitemap](https://www.npmjs.com/package/sitemap#options-you-can-pass) مراجعه کنید. مثال:
@ -36,7 +36,7 @@ export default {
}
}
```
```
## هوک `transformItems`
## هوک `transformItems`{#transformitems-hook}
میتوانید از هوک `sitemap.transformItems` برای اصلاح موارد sitemap قبل از نوشتن آنها به فایل `sitemap.xml` استفاده کنید. این هوک با یک آرایه از موارد sitemap فراخوانی میشود و انتظار دارد که یک آرایه از موارد sitemap بازگردانده شود. مثال:
میتوانید از هوک `sitemap.transformItems` برای اصلاح موارد sitemap قبل از نوشتن آنها به فایل `sitemap.xml` استفاده کنید. این هوک با یک آرایه از موارد sitemap فراخوانی میشود و انتظار دارد که یک آرایه از موارد sitemap بازگردانده شود. مثال:
ویتپرس، با استفاده از قابلیتهای رندرینگ سمت سرور (SSR) ارائه شده توسط Vue، اپلیکیشن را در Node.js در هنگام ساخت تولیدی پیش از رندر میکند. این بدان معناست که کلیه کدهای سفارشی در اجزای تم به تطابق SSR وابسته هستند.
ویتپرس، با استفاده از قابلیتهای رندرینگ سمت سرور (SSR) ارائه شده توسط Vue، اپلیکیشن را در Node.js در هنگام ساخت تولیدی پیش از رندر میکند. این بدان معناست که کلیه کدهای سفارشی در اجزای تم به تطابق SSR وابسته هستند.
[بخش SSR در مستندات رسمی Vue](https://vuejs.org/guide/scaling-up/ssr.html) بیشتر در مورد SSR، ارتباط بین SSR / SSG و نکات متداول در نوشتن کدهای سازگار با SSR توضیح میدهد. قانون عمده این است که فقط در `beforeMount` یا `mounted` هوکهای اجزای Vue از APIهای مرورگر / DOM استفاده کنید.
[بخش SSR در مستندات رسمی Vue](https://vuejs.org/guide/scaling-up/ssr.html) بیشتر در مورد SSR، ارتباط بین SSR / SSG و نکات متداول در نوشتن کدهای سازگار با SSR توضیح میدهد. قانون عمده این است که فقط در `beforeMount` یا `mounted` هوکهای اجزای Vue از APIهای مرورگر / DOM استفاده کنید.
## `<ClientOnly>`
## `<ClientOnly>` {#clientonly}
اگر از اجزا یا دموهایی استفاده میکنید که سازگاری با SSR ندارند (برای مثال حاوی دستورالعملهای سفارشی هستند)، میتوانید آنها را درون کامپوننت داخلی `<ClientOnly>` قرار دهید:
اگر از اجزا یا دموهایی استفاده میکنید که سازگاری با SSR ندارند (برای مثال حاوی دستورالعملهای سفارشی هستند)، میتوانید آنها را درون کامپوننت داخلی `<ClientOnly>` قرار دهید:
@ -18,11 +18,11 @@ outline: deep
</ClientOnly>
</ClientOnly>
```
```
## کتابخانههایی که در هنگام وارد کردن به API مرورگر دسترسی دارند
## کتابخانههایی که در هنگام وارد کردن به API مرورگر دسترسی دارند {#libraries-that-access-browser-api-on-import}
بعضی از کتابخانهها یا اجزا در هنگام وارد کردن به APIهای مرورگر **دسترسی دارند**. برای استفاده از کدی که فرض میکند محیطی مرورگر در هنگام وارد کردن وجود دارد، باید آنها را به صورت پویا وارد کنید.
بعضی از کتابخانهها یا اجزا در هنگام وارد کردن به APIهای مرورگر **دسترسی دارند**. برای استفاده از کدی که فرض میکند محیطی مرورگر در هنگام وارد کردن وجود دارد، باید آنها را به صورت پویا وارد کنید.
### وارد کردن در هوک Mounted
### وارد کردن در هوک Mounted {#importing-in-mounted-hook}
```vue
```vue
<scriptsetup>
<scriptsetup>
@ -36,7 +36,7 @@ onMounted(() => {
</script>
</script>
```
```
### وارد کردن شرطی
### وارد کردن شرطی {#conditional-import}
میتوانید همچنین وابستگی را با استفاده از `import.meta.env.SSR` (قسمتی از [متغیرهای env Vite](https://vitejs.dev/guide/env-and-mode.html#env-variables)) به شرط وارد کنید:
میتوانید همچنین وابستگی را با استفاده از `import.meta.env.SSR` (قسمتی از [متغیرهای env Vite](https://vitejs.dev/guide/env-and-mode.html#env-variables)) به شرط وارد کنید:
# استفاده از Vue در Markdown {#using-vue-in-markdown}
در ویتپرس، هر فایل Markdown به HTML تبدیل شده و سپس به عنوان یک [کامپوننت فایل تکی Vue](https://vuejs.org/guide/scaling-up/sfc.html) پردازش میشود. این بدان معنی است که شما میتوانید از هر ویژگی Vue در داخل Markdown استفاده کنید، شامل قالببندی پویا، استفاده از کامپوننتهای Vue، یا منطق کامپوننت Vue دلخواه در داخل صفحه با افزودن تگ `<script>`.
در ویتپرس، هر فایل Markdown به HTML تبدیل شده و سپس به عنوان یک [کامپوننت فایل تکی Vue](https://vuejs.org/guide/scaling-up/sfc.html) پردازش میشود. این بدان معنی است که شما میتوانید از هر ویژگی Vue در داخل Markdown استفاده کنید، شامل قالببندی پویا، استفاده از کامپوننتهای Vue، یا منطق کامپوننت Vue دلخواه در داخل صفحه با افزودن تگ `<script>`.
@ -8,11 +8,9 @@
همه استفادههای Vue باید با سازگاری SSR همخوانی داشته باشند. برای جزئیات و راهحلهای متداول، به [سازگاری با SSR](./ssr-compat) مراجعه کنید.
همه استفادههای Vue باید با سازگاری SSR همخوانی داشته باشند. برای جزئیات و راهحلهای متداول، به [سازگاری با SSR](./ssr-compat) مراجعه کنید.
:::
:::
## قالببندی
## قالببندی {#templating}
### درونیابی(Interpolation)
### درونیابی(Interpolation) {#interpolation}
#### درونیابی میانجی
هر فایل Markdown ابتدا به HTML تبدیل شده و سپس به عنوان یک کامپوننت Vue به خط لوله فرآیند Vite ارسال میشود. این بدان معنی است که میتوانید از درونیابی به سبک Vue در متن استفاده کنید:
هر فایل Markdown ابتدا به HTML تبدیل شده و سپس به عنوان یک کامپوننت Vue به خط لوله فرآیند Vite ارسال میشود. این بدان معنی است که میتوانید از درونیابی به سبک Vue در متن استفاده کنید:
دستورالعملها نیز کار میکنند (توجه داشته باشید که طراحی، HTML خام همچنین معتبر است):
دستورالعملها نیز کار میکنند (توجه داشته باشید که طراحی، HTML خام همچنین معتبر است):
@ -40,7 +38,7 @@
<divclass="language-text"><pre><code><spanv-for="i in 3">{{ i }} </span></code></pre></div>
<divclass="language-text"><pre><code><spanv-for="i in 3">{{ i }} </span></code></pre></div>
## `<script>` و `<style>`
## `<script>` و `<style>` {#script-and-style}
تگهای `<script>` و `<style>` در سطح ریشه در فایلهای Markdown همانند کارکرد آنها در SFC Vue کار میکنند، شامل `<script setup>`، `<style module>`، و غیره. تفاوت اصلی در اینجا این است که هیچ تگ `<template>` وجود ندارد: تمام محتویات سطح ریشه دیگر Markdown است. همچنین توجه داشته باشید که همه تگها باید **پس از** frontmatter قرار گیرند:
تگهای `<script>` و `<style>` در سطح ریشه در فایلهای Markdown همانند کارکرد آنها در SFC Vue کار میکنند، شامل `<script setup>`، `<style module>`، و غیره. تفاوت اصلی در اینجا این است که هیچ تگ `<template>` وجود ندارد: تمام محتویات سطح ریشه دیگر Markdown است. همچنین توجه داشته باشید که همه تگها باید **پس از** frontmatter قرار گیرند:
@ -98,11 +96,11 @@ const { page } = useData()
}
}
```
```
## استفاده از کامپوننتها
## استفاده از کامپوننتها{#using-components}
شما میتوانید کامپوننتهای Vue را مستقیماً در فایلهای Markdown وارد و استفاده کنید.
شما میتوانید کامپوننتهای Vue را مستقیماً در فایلهای Markdown وارد و استفاده کنید.
### وارد کردن در Markdown
### وارد کردن در Markdown {#importing-in-markdown}
اگر یک کامپوننت تنها توسط چند صفحه استفاده میشود، توصیه میشود آنها را به صراحت در جایی که استفاده میشوند وارد کنید. این کار امکان تقسیم کد مناسب را فراهم میکند و فقط هنگام نمایش صفحات مربوطه بارگذاری میشوند:
اگر یک کامپوننت تنها توسط چند صفحه استفاده میشود، توصیه میشود آنها را به صراحت در جایی که استفاده میشوند وارد کنید. این کار امکان تقسیم کد مناسب را فراهم میکند و فقط هنگام نمایش صفحات مربوطه بارگذاری میشوند:
@ -122,7 +120,7 @@ import CustomComponent from '../components/CustomComponent.vue'
...
...
```
```
### ثبت کامپوننتها به صورت Global
### ثبت کامپوننتها به صورت Global {#registering-components-globally}
اگر یک کامپوننت بر روی اکثر صفحات استفاده میشود، میتوانید آنها را به صورت global با سفارشیسازی نمونه برنامه Vue ثبت کنید. برای مثال، بخش مربوطه را در [گسترش تم پیشفرض](./extending-default-theme#registering-global-components) بررسی کنید.
اگر یک کامپوننت بر روی اکثر صفحات استفاده میشود، میتوانید آنها را به صورت global با سفارشیسازی نمونه برنامه Vue ثبت کنید. برای مثال، بخش مربوطه را در [گسترش تم پیشفرض](./extending-default-theme#registering-global-components) بررسی کنید.
@ -132,7 +130,7 @@ import CustomComponent from '../components/CustomComponent.vue'
عنصر داخلی تلقی میشود و درون یک تگ `<p>` قرار داده خواهد شد که باعث عدم همسانیسازی hydration میشود چون `<p>` اجازه قرار دادن عناصر بلوک داخل آن را نمیدهد.
عنصر داخلی تلقی میشود و درون یک تگ `<p>` قرار داده خواهد شد که باعث عدم همسانیسازی hydration میشود چون `<p>` اجازه قرار دادن عناصر بلوک داخل آن را نمیدهد.
:::
:::
### استفاده از کامپوننتها در سربرگها <ComponentInHeader/>
### استفاده از کامپوننتها در سربرگها <ComponentInHeader/> {#using-components-in-headers}
شما میتوانید کامپوننتهای Vue را در سربرگها استفاده کنید، اما تفاوت بین دو نحوه نگارش زیر را توجه کنید:
شما میتوانید کامپوننتهای Vue را در سربرگها استفاده کنید، اما تفاوت بین دو نحوه نگارش زیر را توجه کنید:
@ -147,7 +145,7 @@ HTML که توسط `<code>` محصور شده باشد به عنوان آن نم
خروجی HTML توسط [Markdown-it](https://github.com/Markdown-it/Markdown-it) انجام میشود، در حالی که سربرگهای تجزیه شده توسط ویتپرس انجام میشود (و برای هر دو نوار کناری و عنوان سند استفاده میشود).
خروجی HTML توسط [Markdown-it](https://github.com/Markdown-it/Markdown-it) انجام میشود، در حالی که سربرگهای تجزیه شده توسط ویتپرس انجام میشود (و برای هر دو نوار کناری و عنوان سند استفاده میشود).
:::
:::
## Escaping
## Escaping {#escaping}
شما میتوانید درونیابیهای Vue را با محصور کردن آنها در یک `<span>` یا عناصر دیگر با دستورالعمل `v-pre` فرار کنید:
شما میتوانید درونیابیهای Vue را با محصور کردن آنها در یک `<span>` یا عناصر دیگر با دستورالعمل `v-pre` فرار کنید:
@ -181,7 +179,7 @@ This <span v-pre>{{ will be displayed as-is }}</span>
</div>
</div>
## غیرفعال کردن در بلوکهای کد
## غیرفعال کردن در بلوکهای کد {#unescape-in-code-blocks}
به طور پیشفرض، تمام بلوکهای کد با حصار `v-pre` به صورت خودکار محصور میشوند، بنابراین هیچ نحوه درونیابی Vue در داخل آنها پردازش نمیشود. برای فعال کردن درونیابی به سبک Vue در داخل حصارها، میتوانید زبان را با پسوند `-vue` اضافه کنید، به عنوان مثال `js-vue`:
به طور پیشفرض، تمام بلوکهای کد با حصار `v-pre` به صورت خودکار محصور میشوند، بنابراین هیچ نحوه درونیابی Vue در داخل آنها پردازش نمیشود. برای فعال کردن درونیابی به سبک Vue در داخل حصارها، میتوانید زبان را با پسوند `-vue` اضافه کنید، به عنوان مثال `js-vue`:
@ -201,7 +199,7 @@ Hello {{ 1 + 1 }}
توجه داشته باشید که این ممکن است باعث جلوگیری از نمایش صحیح برخی نشانهها در هایلایتینگ نحوه زبان شود.
توجه داشته باشید که این ممکن است باعث جلوگیری از نمایش صحیح برخی نشانهها در هایلایتینگ نحوه زبان شود.
## استفاده از پیشپردازندههای CSS
## استفاده از پیشپردازندههای CSS {#using-css-pre-processors}
ویتپرس از [پشتیبانی داخلی](https://vitejs.dev/guide/features.html#css-pre-processors) برای پیشپردازندههای CSS مانند فایلهای `.scss`، `.sass`، `.less`، `.styl` و `.stylus` پشتیبانی میکند. برای استفاده از آنها نیازی به نصب پلاگینهای خاص Vite نیست، اما خود پیشپردازنده مربوطه باید نصب شده باشد:
ویتپرس از [پشتیبانی داخلی](https://vitejs.dev/guide/features.html#css-pre-processors) برای پیشپردازندههای CSS مانند فایلهای `.scss`، `.sass`، `.less`، `.styl` و `.stylus` پشتیبانی میکند. برای استفاده از آنها نیازی به نصب پلاگینهای خاص Vite نیست، اما خود پیشپردازنده مربوطه باید نصب شده باشد:
@ -225,7 +223,7 @@ npm install -D stylus
</style>
</style>
```
```
## استفاده از Teleport
## استفاده از Teleport {#using-teleports}
در حال حاضر ویتپرس پشتیبانی از SSG برای teleport به body را دارد. برای اهداف دیگر، میتوانید آنها را درون کامپوننت `<ClientOnly>` یا نشانه تلهپورت به مکان مناسب در HTML صفحه نهایی خود از طریق [هوک postRender](../reference/site-config#postrender) درج کنید.
در حال حاضر ویتپرس پشتیبانی از SSG برای teleport به body را دارد. برای اهداف دیگر، میتوانید آنها را درون کامپوننت `<ClientOnly>` یا نشانه تلهپورت به مکان مناسب در HTML صفحه نهایی خود از طریق [هوک postRender](../reference/site-config#postrender) درج کنید.
ویتپرس یک [تولید کننده سایت ایستا](https://en.wikipedia.org/wiki/Static_site_generator) (SSG) است که برای ساخت وبسایتهای سریع و محتوا محور طراحی شده است. به طور خلاصه، ویتپرس محتوای منبع شما که به زبان [Markdown](https://en.wikipedia.org/wiki/Markdown) نوشته شده است را گرفته، یک تم بر روی آن اعمال میکند و صفحات HTML ایستا تولید میکند که به راحتی در هر جایی قابل استقرار هستند.
ویتپرس یک [تولید کننده سایت ایستا](https://en.wikipedia.org/wiki/Static_site_generator) (SSG) است که برای ساخت وبسایتهای سریع و محتوا محور طراحی شده است. به طور خلاصه، ویتپرس محتوای منبع شما که به زبان [Markdown](https://en.wikipedia.org/wiki/Markdown) نوشته شده است را گرفته، یک تم بر روی آن اعمال میکند و صفحات HTML ایستا تولید میکند که به راحتی در هر جایی قابل استقرار هستند.
@ -8,7 +8,7 @@
</div>
</div>
## موارد استفاده
## موارد استفاده {#use-cases}
- **مستندسازی**
- **مستندسازی**
@ -22,7 +22,7 @@
وبلاگ رسمی [Vue.js](https://blog.vuejs.org/) یک وبلاگ ساده است که صفحه فهرست خود را بر اساس محتوای محلی تولید میکند.
وبلاگ رسمی [Vue.js](https://blog.vuejs.org/) یک وبلاگ ساده است که صفحه فهرست خود را بر اساس محتوای محلی تولید میکند.
## تجربه توسعه دهنده
## تجربه توسعه دهنده {#developer-experience}
ویتپرس هدف ارائه یک تجربه عالی برای توسعه دهنده (DX) هنگام کار با محتوای Markdown را دارد.
ویتپرس هدف ارائه یک تجربه عالی برای توسعه دهنده (DX) هنگام کار با محتوای Markdown را دارد.
@ -32,7 +32,7 @@
- **[Markdown بهبود یافته با Vue:](./using-vue)** هر صفحه Markdown نیز یک [کامپوننت تک فایل Vue](https://vuejs.org/guide/scaling-up/sfc.html) است، به لطف سازگاری ۱۰۰٪ سینتکسی قالب Vue با HTML. شما میتوانید از ویژگیهای قالببندی Vue یا کامپوننتهای وارد شده Vue برای ایجاد تعامل در محتوای ایستا خود استفاده کنید.
- **[Markdown بهبود یافته با Vue:](./using-vue)** هر صفحه Markdown نیز یک [کامپوننت تک فایل Vue](https://vuejs.org/guide/scaling-up/sfc.html) است، به لطف سازگاری ۱۰۰٪ سینتکسی قالب Vue با HTML. شما میتوانید از ویژگیهای قالببندی Vue یا کامپوننتهای وارد شده Vue برای ایجاد تعامل در محتوای ایستا خود استفاده کنید.
## عملکرد
## عملکرد {#performance}
بر خلاف بسیاری از SSGهای سنتی که هر ناوبری منجر به بارگذاری کامل صفحه میشود، یک وبسایت تولید شده توسط ویتپرس در بازدید اولیه HTML ایستا را سرو میکند، اما برای ناوبریهای بعدی در سایت به یک [برنامه تک صفحهای](https://en.wikipedia.org/wiki/Single-page_application) (SPA) تبدیل میشود. به نظر ما، این مدل برای عملکرد بهترین تعادل را فراهم میکند:
بر خلاف بسیاری از SSGهای سنتی که هر ناوبری منجر به بارگذاری کامل صفحه میشود، یک وبسایت تولید شده توسط ویتپرس در بازدید اولیه HTML ایستا را سرو میکند، اما برای ناوبریهای بعدی در سایت به یک [برنامه تک صفحهای](https://en.wikipedia.org/wiki/Single-page_application) (SPA) تبدیل میشود. به نظر ما، این مدل برای عملکرد بهترین تعادل را فراهم میکند:
@ -48,7 +48,7 @@
برای اینکه بتوانید بخشهای پویا Vue جاسازی شده در داخل Markdown ایستا را hydrated کنید، هر صفحه Markdown به عنوان یک کامپوننت Vue پردازش و به JavaScript کامپایل میشود. این ممکن است غیر بهینه به نظر برسد، اما کامپایلر Vue به اندازه کافی هوشمند است که بخشهای ایستا و پویا را جدا کند، هزینه hydration و اندازه محموله را به حداقل برساند. برای بارگذاری اولیه صفحه، بخشهای ایستا به صورت خودکار از محموله JavaScript حذف میشوند و در حین hydration نادیده گرفته میشوند.
برای اینکه بتوانید بخشهای پویا Vue جاسازی شده در داخل Markdown ایستا را hydrated کنید، هر صفحه Markdown به عنوان یک کامپوننت Vue پردازش و به JavaScript کامپایل میشود. این ممکن است غیر بهینه به نظر برسد، اما کامپایلر Vue به اندازه کافی هوشمند است که بخشهای ایستا و پویا را جدا کند، هزینه hydration و اندازه محموله را به حداقل برساند. برای بارگذاری اولیه صفحه، بخشهای ایستا به صورت خودکار از محموله JavaScript حذف میشوند و در حین hydration نادیده گرفته میشوند.
## درباره VuePress چه؟
## درباره VuePress چه؟ {#what-about-vuepress}
ویتپرس جانشین معنوی VuePress است. VuePress اصلی بر پایه Vue 2 و webpack بود. با Vue 3 و Vite در هسته، ویتپرس تجربه توسعه بهتر، عملکرد تولید بهتر، تم پیشفرض کاملتر و API سفارشیسازی انعطافپذیرتری ارائه میدهد.
ویتپرس جانشین معنوی VuePress است. VuePress اصلی بر پایه Vue 2 و webpack بود. با Vue 3 و Vite در هسته، ویتپرس تجربه توسعه بهتر، عملکرد تولید بهتر، تم پیشفرض کاملتر و API سفارشیسازی انعطافپذیرتری ارائه میدهد.
شروع سرور توسعه ویتپرس با استفاده از دایرکتوری مشخص به عنوان ریشه. به طور پیشفرض از دایرکتوری فعلی استفاده میشود. دستور `dev` همچنین میتواند حذف شود زمانی که در دایرکتوری فعلی اجرا میشود.
شروع سرور توسعه ویتپرس با استفاده از دایرکتوری مشخص به عنوان ریشه. به طور پیشفرض از دایرکتوری فعلی استفاده میشود. دستور `dev` همچنین میتواند حذف شود زمانی که در دایرکتوری فعلی اجرا میشود.
| `--minify [minifier]` | فعال یا غیرفعال کردن فشردهسازی، یا تعیین فشردهسازی برای استفاده (پیشفرض: `"esbuild"`) (`boolean \| "terser" \| "esbuild"`) |
| `--minify [minifier]` | فعال یا غیرفعال کردن فشردهسازی، یا تعیین فشردهسازی برای استفاده (پیشفرض: `"esbuild"`) (`boolean \| "terser" \| "esbuild"`) |
| `--assetsInlineLimit <number>` | آستانه تبدیل پایه ۶۴ استاتیک به بایت (پیشفرض: `4096`) (`number`) |
| `--assetsInlineLimit <number>` | آستانه تبدیل پایه ۶۴ استاتیک به بایت (پیشفرض: `4096`) (`number`) |
برچسب به شما امکان میدهد وضعیتهای مختلفی را به سربرگهای خود اضافه کنید. به عنوان مثال، میتواند مفید باشد تا نوع بخش را مشخص کنید یا نسخههای پشتیبانی شده را نشان دهید.
برچسب به شما امکان میدهد وضعیتهای مختلفی را به سربرگهای خود اضافه کنید. به عنوان مثال، میتواند مفید باشد تا نوع بخش را مشخص کنید یا نسخههای پشتیبانی شده را نشان دهید.
## استفاده
## استفاده {#usage}
شما میتوانید از کامپوننت `Badge` که به صورت جهانی در دسترس است، استفاده کنید.
شما میتوانید از کامپوننت `Badge` که به صورت جهانی در دسترس است، استفاده کنید.
@ -15,12 +15,15 @@
کد بالا به صورت زیر نمایش داده میشود:
کد بالا به صورت زیر نمایش داده میشود:
### عنوان <Badgetype="info"text="پیشفرض"/>
### عنوان <Badgetype="info"text="پیشفرض"/> {#title}
### عنوان <Badgetype="tip"text="^1.9.0"/>
### عنوان <Badgetype="warning"text="بتا"/>
### عنوان <Badgetype="tip"text="^1.9.0"/> {#title-1}
### عنوان <Badgetype="danger"text="هشدار"/>
### عنوان <Badgetype="warning"text="بتا"/> {#title-2}
### عنوان <Badgetype="danger"text="هشدار"/> {#title-3}
## ارائه دادن محتوای دلخواه
## ارائه دادن محتوای دلخواه{#custom-children}
`<Badge>` میپذیرد `children` که در برچسب نمایش داده خواهد شد.
`<Badge>` میپذیرد `children` که در برچسب نمایش داده خواهد شد.
@ -30,7 +33,7 @@
### عنوان <Badgetype="info">عنصر سفارشی</Badge>
### عنوان <Badgetype="info">عنصر سفارشی</Badge>
## سفارشیسازی رنگ نوع
## سفارشیسازی رنگ نوع {#customize-type-color}
شما میتوانید استایل برچسبها را با دوبارهنویسی متغیرهای css سفارشی کنید. مقادیر پیشفرض به شرح زیر هستند:
شما میتوانید استایل برچسبها را با دوبارهنویسی متغیرهای css سفارشی کنید. مقادیر پیشفرض به شرح زیر هستند:
ویتپرس پشتیبانی داخلی برای [Carbon Ads](https://www.carbonads.net/) را دارد. با تعریف مشخصات تبلیغات Carbon در تنظیمات، ویتپرس تبلیغات را در صفحه نمایش میدهد.
ویتپرس پشتیبانی داخلی برای [Carbon Ads](https://www.carbonads.net/) را دارد. با تعریف مشخصات تبلیغات Carbon در تنظیمات، ویتپرس تبلیغات را در صفحه نمایش میدهد.
پیکربندی تم به شما امکان میدهد تا تم خود را سفارشی کنید. شما میتوانید پیکربندی تم را از طریق گزینه `themeConfig` در فایل پیکربندی تعریف کنید:
پیکربندی تم به شما امکان میدهد تا تم خود را سفارشی کنید. شما میتوانید پیکربندی تم را از طریق گزینه `themeConfig` در فایل پیکربندی تعریف کنید:
@ -19,13 +19,13 @@ export default {
**گزینههای مستند شده در این صفحه تنها برای تم پیشفرض اعمال میشوند.** تمهای مختلف انتظار دارند که پیکربندی تم متفاوتی داشته باشند. در هنگام استفاده از یک تم سفارشی، شیء پیکربندی تم به تم منتقل میشود تا تم بتواند بر اساس آن رفتار شرطی را تعریف کند.
**گزینههای مستند شده در این صفحه تنها برای تم پیشفرض اعمال میشوند.** تمهای مختلف انتظار دارند که پیکربندی تم متفاوتی داشته باشند. در هنگام استفاده از یک تم سفارشی، شیء پیکربندی تم به تم منتقل میشود تا تم بتواند بر اساس آن رفتار شرطی را تعریف کند.
## i18nRouting
## i18nRouting {#i18nrouting}
- نوع: `boolean`
- نوع: `boolean`
تغییر زبان به `zh` باعث تغییر URL از `/foo` (یا `/en/foo/`) به `/zh/foo` میشود. شما میتوانید این رفتار را با تنظیم `themeConfig.i18nRouting` به `false` غیرفعال کنید.
تغییر زبان به `zh` باعث تغییر URL از `/foo` (یا `/en/foo/`) به `/zh/foo` میشود. شما میتوانید این رفتار را با تنظیم `themeConfig.i18nRouting` به `false` غیرفعال کنید.
پیوند ویرایش به شما این امکان را میدهد که یک پیوند به صفحه ویرایش را در خدمات مدیریت گیت مانند GitHub یا GitLab نمایش دهید. برای فعالسازی آن، گزینه `themeConfig.editLink` را به پیکربندی خود اضافه کنید.
پیوند ویرایش به شما این امکان را میدهد که یک پیوند به صفحه ویرایش را در خدمات مدیریت گیت مانند GitHub یا GitLab نمایش دهید. برای فعالسازی آن، گزینه `themeConfig.editLink` را به پیکربندی خود اضافه کنید.
@ -49,7 +49,7 @@ export default {
}
}
```
```
## پیکربندی Frontmatter
## پیکربندی Frontmatter {#frontmatter-config}
میتوانید این امکان را برای هر صفحه با استفاده از گزینه `editLink` در frontmatter غیرفعال کنید:
میتوانید این امکان را برای هر صفحه با استفاده از گزینه `editLink` در frontmatter غیرفعال کنید:
قالب پیشفرض ویتپرس یک طرح صفحه اصلی فراهم میکند که میتوانید آن را همچنین در [صفحه اصلی این سایت](../) مشاهده کنید. شما میتوانید آن را در هر یک از صفحات خود با تعیین `layout: home` در [frontmatter](./frontmatter-config) استفاده کنید.
قالب پیشفرض ویتپرس یک طرح صفحه اصلی فراهم میکند که میتوانید آن را همچنین در [صفحه اصلی این سایت](../) مشاهده کنید. شما میتوانید آن را در هر یک از صفحات خود با تعیین `layout: home` در [frontmatter](./frontmatter-config) استفاده کنید.
@ -10,7 +10,7 @@ layout: home
اما این گزینه به تنهایی خیلی کاربردی نخواهد بود. شما میتوانید با اضافه کردن بخشهای "قالبهای پیشفرض" مختلف، چندین بخش متفاوت را به صفحه اصلی اضافه کنید مانند `hero` و `features`.
اما این گزینه به تنهایی خیلی کاربردی نخواهد بود. شما میتوانید با اضافه کردن بخشهای "قالبهای پیشفرض" مختلف، چندین بخش متفاوت را به صفحه اصلی اضافه کنید مانند `hero` و `features`.
## بخش Hero
## بخش Hero {#hero-section}
بخش Hero در بالای صفحه اصلی قرار دارد. در ادامه میتوانید نحوه پیکربندی بخش Hero را ببینید.
بخش Hero در بالای صفحه اصلی قرار دارد. در ادامه میتوانید نحوه پیکربندی بخش Hero را ببینید.
@ -76,7 +76,7 @@ interface HeroAction {
}
}
```
```
### سفارشیسازی رنگ نام
### سفارشیسازی رنگ نام {#customizing-the-name-color}
ویتپرس از رنگ برند (`--vp-c-brand-1`) برای `name` استفاده میکند. با این حال، شما میتوانید این رنگ را با جایگذاری متغیر `--vp-home-hero-name-color` سفارشی کنید.
ویتپرس از رنگ برند (`--vp-c-brand-1`) برای `name` استفاده میکند. با این حال، شما میتوانید این رنگ را با جایگذاری متغیر `--vp-home-hero-name-color` سفارشی کنید.
@ -95,7 +95,7 @@ interface HeroAction {
}
}
```
```
## بخش ویژگیها
## {#features-section} بخش ویژگیها
در بخش ویژگیها، میتوانید هر تعدادی ویژگی که مایلید پس از بخش Hero نمایش دهید، لیست کنید. برای پیکربندی آن، گزینه `features` را به frontmatter ارسال کنید.
در بخش ویژگیها، میتوانید هر تعدادی ویژگی که مایلید پس از بخش Hero نمایش دهید، لیست کنید. برای پیکربندی آن، گزینه `features` را به frontmatter ارسال کنید.
@ -163,7 +163,7 @@ type FeatureIcon =
}
}
```
```
## محتوای Markdown
## محتوای Markdown {#markdown-content}
میتوانید محتوای اضافی را به صفحه اصلی سایت خود اضافه کنید فقط با افزودن Markdown زیر تقسیمکننده `---` در پایین frontmatter.
میتوانید محتوای اضافی را به صفحه اصلی سایت خود اضافه کنید فقط با افزودن Markdown زیر تقسیمکننده `---` در پایین frontmatter.
میتوانید طرح صفحه را با تنظیم گزینه `layout` در [frontmatter](./frontmatter-config) صفحه انتخاب کنید. سه گزینه طرح وجود دارد، `doc`، `page` و `home`. اگر هیچ چیز مشخص نشده باشد، صفحه به عنوان صفحه `doc` در نظر گرفته میشود.
میتوانید طرح صفحه را با تنظیم گزینه `layout` در [frontmatter](./frontmatter-config) صفحه انتخاب کنید. سه گزینه طرح وجود دارد، `doc`، `page` و `home`. اگر هیچ چیز مشخص نشده باشد، صفحه به عنوان صفحه `doc` در نظر گرفته میشود.
@ -8,7 +8,7 @@ layout: doc
---
---
```
```
## طرح Doc
## طرح Doc {#doc-layout}
گزینه `doc` طرح پیشفرض است و تمام محتوای Markdown را به "نمایشگاه" درست میکند. این با پوشاندن کل محتوا در داخل کلاس css `vp-doc` کار میکند و استایلهای لازم را بر روی عناصر زیرش اعمال میکند.
گزینه `doc` طرح پیشفرض است و تمام محتوای Markdown را به "نمایشگاه" درست میکند. این با پوشاندن کل محتوا در داخل کلاس css `vp-doc` کار میکند و استایلهای لازم را بر روی عناصر زیرش اعمال میکند.
@ -21,7 +21,7 @@ layout: doc
- ساختار
- ساختار
- [تبلیغات Carbon](./default-theme-carbon-ads)
- [تبلیغات Carbon](./default-theme-carbon-ads)
## طرح Page
## طرح Page {#page-layout}
گزینه `page` به عنوان "صفحه خالی" در نظر گرفته میشود. Markdown همچنان تجزیه و تحلیل میشود و تمامی [توسعههای Markdown](../guide/markdown) به عنوان طرح `doc` کار میکنند، اما هیچ استایل پیشفرضی به آن اعمال نمیشود.
گزینه `page` به عنوان "صفحه خالی" در نظر گرفته میشود. Markdown همچنان تجزیه و تحلیل میشود و تمامی [توسعههای Markdown](../guide/markdown) به عنوان طرح `doc` کار میکنند، اما هیچ استایل پیشفرضی به آن اعمال نمیشود.
@ -29,15 +29,15 @@ layout: doc
توجه داشته باشید که حتی در این طرح، نوار کناری نیز نمایش داده میشود اگر صفحه دارای پیکربندی نوار کناری مطابق باشد.
توجه داشته باشید که حتی در این طرح، نوار کناری نیز نمایش داده میشود اگر صفحه دارای پیکربندی نوار کناری مطابق باشد.
## طرح Home
## طرح Home {#home-layout}
گزینه `home` صفحه "خانه" قالببندی میکند. در این طرح، میتوانید گزینههای اضافی مانند `hero` و `features` را برای دلخواهسازی محتوا تنظیم کنید. لطفاً [صفحه پیشفرض: صفحه خانه](./default-theme-home-page) را برای اطلاعات بیشتر مشاهده کنید.
گزینه `home` صفحه "خانه" قالببندی میکند. در این طرح، میتوانید گزینههای اضافی مانند `hero` و `features` را برای دلخواهسازی محتوا تنظیم کنید. لطفاً [صفحه پیشفرض: صفحه خانه](./default-theme-home-page) را برای اطلاعات بیشتر مشاهده کنید.
## بدون طرح
## بدون طرح {#no-layout}
اگر نمیخواهید هیچ طرحی داشته باشید، میتوانید با گذراندن `layout: false` از frontmatter، از این گزینه استفاده کنید. این گزینه مفید است اگر صفحهٔ نخستی کاملاً قابل تنظیم (بدون هیچ نوار کناری، نوار ناوبری یا پاورقی به صورت پیشفرض) را میخواهید.
اگر نمیخواهید هیچ طرحی داشته باشید، میتوانید با گذراندن `layout: false` از frontmatter، از این گزینه استفاده کنید. این گزینه مفید است اگر صفحهٔ نخستی کاملاً قابل تنظیم (بدون هیچ نوار کناری، نوار ناوبری یا پاورقی به صورت پیشفرض) را میخواهید.
ناوبری نوار ناوبری است که در بالای صفحه نمایش داده میشود و شامل عنوان سایت، لینکهای منوی جهانی، و غیره میباشد.
ناوبری نوار ناوبری است که در بالای صفحه نمایش داده میشود و شامل عنوان سایت، لینکهای منوی جهانی، و غیره میباشد.
## عنوان سایت و لوگو
## عنوان سایت و لوگو {#site-title-and-logo}
به طور پیشفرض، ناو نام سایت را با ارجاع به مقدار [`config.title`](./site-config#title) نمایش میدهد. اگر میخواهید تغییر دهید که چه چیزی در ناو نمایش داده شود، میتوانید متن سفارشی را در گزینه `themeConfig.siteTitle` تعریف کنید.
به طور پیشفرض، ناو نام سایت را با ارجاع به مقدار [`config.title`](./site-config#title) نمایش میدهد. اگر میخواهید تغییر دهید که چه چیزی در ناو نمایش داده شود، میتوانید متن سفارشی را در گزینه `themeConfig.siteTitle` تعریف کنید.
@ -37,7 +37,7 @@ export default {
همچنین میتوانید به عنوان لوگو یک شیء را نیز ارسال کنید اگر میخواهید ویژگی `alt` را اضافه کنید یا آن را بر اساس حالت تاریک / روشن سفارشیسازی کنید. برای جزئیات بیشتر به [`themeConfig.logo`](./default-theme-config#logo) مراجعه کنید.
همچنین میتوانید به عنوان لوگو یک شیء را نیز ارسال کنید اگر میخواهید ویژگی `alt` را اضافه کنید یا آن را بر اساس حالت تاریک / روشن سفارشیسازی کنید. برای جزئیات بیشتر به [`themeConfig.logo`](./default-theme-config#logo) مراجعه کنید.
## لینکهای ناوبری
## لینکهای ناوبری {#navigation-links}
شما میتوانید گزینه `themeConfig.nav` را تعریف کنید تا لینکها را به ناوبری خود اضافه کنید.
شما میتوانید گزینه `themeConfig.nav` را تعریف کنید تا لینکها را به ناوبری خود اضافه کنید.
موارد منوی ناوبری زمانی که صفحه فعلی زیر مسیر مطابقت دارد، مشخص میشوند. اگر میخواهید مسیر مطابقت را سفارشی کنید، ویژگی `activeMatch` و regex را به عنوان مقدار رشته تعریف کنید.
موارد منوی ناوبری زمانی که صفحه فعلی زیر مسیر مطابقت دارد، مشخص میشوند. اگر میخواهید مسیر مطابقت را سفارشی کنید، ویژگی `activeMatch` و regex را به عنوان مقدار رشته تعریف کنید.
@ -137,7 +137,7 @@ export default {
`activeMatch` انتظار میرود که به عنوان یک رشته regex باشد، اما شما باید آن را به عنوان یک رشته تعریف کنید. ما نمیتوانیم از شیء RegExp واقعی اینجا استفاده کنیم زیرا در زمان ساخت غیر قابل سریالیز کردن است.
`activeMatch` انتظار میرود که به عنوان یک رشته regex باشد، اما شما باید آن را به عنوان یک رشته تعریف کنید. ما نمیتوانیم از شیء RegExp واقعی اینجا استفاده کنیم زیرا در زمان ساخت غیر قابل سریالیز کردن است.
:::
:::
### سفارشیسازی ویژگیهای "target" و "rel" لینک
### سفارشیسازی ویژگیهای "target" و "rel" لینک {#customize-link-s-target-and-rel-attributes}
به طور پیشفرض، ویتپرس به طور خودکار ویژگیهای
به طور پیشفرض، ویتپرس به طور خودکار ویژگیهای
@ -158,7 +158,7 @@ export default {
}
}
```
```
## لینکهای اجتماعی
## لینکهای اجتماعی {#social-links}
به [`socialLinks`](./default-theme-config#sociallinks) مراجعه کنید.
به [`socialLinks`](./default-theme-config#sociallinks) مراجعه کنید.
شما میتوانید متن و پیوند برای صفحات قبلی و بعدی را سفارشیسازی کنید (نمایش داده شده در پایین صفحه مستندات). این مفید است اگر میخواهید متن دیگری را در این قسمت نمایش دهید که با آنچه در نوار کناری دارید، متفاوت باشد. همچنین، ممکن است مفید باشد که فوتر را غیرفعال کنید یا به یک صفحه لینک کنید که در نوار کناری شما وجود ندارد.
شما میتوانید متن و پیوند برای صفحات قبلی و بعدی را سفارشیسازی کنید (نمایش داده شده در پایین صفحه مستندات). این مفید است اگر میخواهید متن دیگری را در این قسمت نمایش دهید که با آنچه در نوار کناری دارید، متفاوت باشد. همچنین، ممکن است مفید باشد که فوتر را غیرفعال کنید یا به یک صفحه لینک کنید که در نوار کناری شما وجود ندارد.
ویتپرس از جستجوی متن کامل نامتقارن با استفاده از یک فهرست در مرورگر با تشکر از [minisearch](https://github.com/lucaong/minisearch/) پشتیبانی میکند. برای فعالسازی این ویژگی، کافی است گزینه `themeConfig.search.provider` را به `'local'` در فایل `.vitepress/config.ts` خود تنظیم کنید:
ویتپرس از جستجوی متن کامل نامتقارن با استفاده از یک فهرست در مرورگر با تشکر از [minisearch](https://github.com/lucaong/minisearch/) پشتیبانی میکند. برای فعالسازی این ویژگی، کافی است گزینه `themeConfig.search.provider` را به `'local'` در فایل `.vitepress/config.ts` خود تنظیم کنید:
@ -69,7 +69,7 @@ export default defineConfig({
})
})
```
```
### گزینههای miniSearch
### گزینههای miniSearch {#minisearch-options}
میتوانید MiniSearch را به این صورت پیکربندی کنید:
میتوانید MiniSearch را به این صورت پیکربندی کنید:
@ -105,7 +105,7 @@ export default defineConfig({
برای کسب اطلاعات بیشتر به [اسناد MiniSearch](https://lucaong.github.io/minisearch/classes/MiniSearch.MiniSearch.html) مراجعه کنید.
برای کسب اطلاعات بیشتر به [اسناد MiniSearch](https://lucaong.github.io/minisearch/classes/MiniSearch.MiniSearch.html) مراجعه کنید.
میتوانید تابع استفاده شده برای رندر محتوای Markdown قبل از فهرستبندی آن را سفارشیسازی کنید:
میتوانید تابع استفاده شده برای رندر محتوای Markdown قبل از فهرستبندی آن را سفارشیسازی کنید:
@ -133,7 +133,7 @@ export default defineConfig({
این تابع از دادههای سایت سمت کلاینت پاک خواهد شد، بنابراین شما میتوانید از APIهای Node.js در آن استفاده کنید.
این تابع از دادههای سایت سمت کلاینت پاک خواهد شد، بنابراین شما میتوانید از APIهای Node.js در آن استفاده کنید.
#### مثال: استثنای صفحات از جستجو
#### مثال: استثنای صفحات از جستجو {#example-excluding-pages-from-search}
میتوانید با اضافه کردن `search: false` به frontmatter صفحه، صفحات را از جستجو استثنا دهید. به طور جایگزین:
میتوانید با اضافه کردن `search: false` به frontmatter صفحه، صفحات را از جستجو استثنا دهید. به طور جایگزین:
@ -161,7 +161,7 @@ export default defineConfig({
در صورت ارائه تابع `_render` سفارشی، باید خودتان بررسی کنید که آیا frontmatter `search: false` را مدیریت میکند یا خیر. همچنین، شی env قبل از فراخوانی `md.render` کاملاً پر نمیشود، بنابراین هر بررسیای روی ویژگیهای اختیاری env مانند `frontmatter` باید بعد از آن انجام شود.
در صورت ارائه تابع `_render` سفارشی، باید خودتان بررسی کنید که آیا frontmatter `search: false` را مدیریت میکند یا خیر. همچنین، شی env قبل از فراخوانی `md.render` کاملاً پر نمیشود، بنابراین هر بررسیای روی ویژگیهای اختیاری env مانند `frontmatter` باید بعد از آن انجام شود.
:::
:::
#### مثال: تبدیل محتوا - افزودن لینکهای صفحه
#### مثال: تبدیل محتوا - افزودن لینکهای صفحه {#example-transforming-content-adding-anchors}
```ts
```ts
import { defineConfig } from 'vitepress'
import { defineConfig } from 'vitepress'
@ -183,7 +183,7 @@ export default defineConfig({
})
})
```
```
## جستجوی Algolia
## جستجوی Algolia {#algolia-search}
ویتپرس از جستجو در سایت مستندات شما با استفاده از [Algolia DocSearch](https://docsearch.algolia.com/docs/what-is-docsearch) پشتیبانی میکند. به راهنمای شروع کار آنها مراجعه کنید. در فایل `.vitepress/config.ts` شما نیاز دارید که حداقل موارد زیر را فراهم کنید تا کار کند:
ویتپرس از جستجو در سایت مستندات شما با استفاده از [Algolia DocSearch](https://docsearch.algolia.com/docs/what-is-docsearch) پشتیبانی میکند. به راهنمای شروع کار آنها مراجعه کنید. در فایل `.vitepress/config.ts` شما نیاز دارید که حداقل موارد زیر را فراهم کنید تا کار کند:
@ -270,7 +270,7 @@ export default defineConfig({
این [گزینهها](https://github.com/vuejs/vitepress/blob/main/types/docsearch.d.ts) میتوانند بازنویسی شوند. برای یادگیری بیشتر درباره آنها به اسناد رسمی Algolia مراجعه کنید.
این [گزینهها](https://github.com/vuejs/vitepress/blob/main/types/docsearch.d.ts) میتوانند بازنویسی شوند. برای یادگیری بیشتر درباره آنها به اسناد رسمی Algolia مراجعه کنید.
### پیکربندی Crawler
### پیکربندی Crawler {#crawler-config}
در اینجا یک پیکربندی نمونه بر اساس آنچه که این سایت استفاده میکند آمده است:
در اینجا یک پیکربندی نمونه بر اساس آنچه که این سایت استفاده میکند آمده است:
نوار کناری بلوک اصلی ناوبری برای مستندات شما است. شما میتوانید منوی نوار کناری را در [`themeConfig.sidebar`](./default-theme-config#sidebar) پیکربندی کنید.
نوار کناری بلوک اصلی ناوبری برای مستندات شما است. شما میتوانید منوی نوار کناری را در [`themeConfig.sidebar`](./default-theme-config#sidebar) پیکربندی کنید.
@ -19,7 +19,7 @@ export default {
}
}
```
```
## مبانی
## مبانی {#the-basics}
سادهترین فرم منوی نوار کناری ارسال یک آرایه تکی از لینکهاست. آیتم سطح اول "بخش" نوار کناری را تعریف میکند. باید شامل `text` باشد که عنوان بخش است و `items` که لینکهای واقعی ناوبری هستند.
سادهترین فرم منوی نوار کناری ارسال یک آرایه تکی از لینکهاست. آیتم سطح اول "بخش" نوار کناری را تعریف میکند. باید شامل `text` باشد که عنوان بخش است و `items` که لینکهای واقعی ناوبری هستند.
@ -93,7 +93,7 @@ export default {
}
}
```
```
## نوارهای کناری چندگانه
## نوارهای کناری چندگانه {#multiple-sidebars}
میتوانید بسته به مسیر صفحه، نوار کناری مختلفی را نمایش دهید. به عنوان مثال، همانطور که در این سایت نشان داده شده است، ممکن است بخواهید برای مستندات خود بخشهای جداگانه مانند صفحه "راهنما" و صفحه "پیکربندی" را ایجاد کنید.
میتوانید بسته به مسیر صفحه، نوار کناری مختلفی را نمایش دهید. به عنوان مثال، همانطور که در این سایت نشان داده شده است، ممکن است بخواهید برای مستندات خود بخشهای جداگانه مانند صفحه "راهنما" و صفحه "پیکربندی" را ایجاد کنید.
@ -145,7 +145,7 @@ export default {
}
}
```
```
## گروههای نوار کناری قابل جمع و جور
## گروههای نوار کناری قابل جمع و جور {#collapsible-sidebar-groups}
با اضافه کردن گزینه `collapsed` به گروه نوار کناری، دکمه جداگانهای برای پنهان کردن/نمایش هر بخش نمایش داده میشود.
با اضافه کردن گزینه `collapsed` به گروه نوار کناری، دکمه جداگانهای برای پنهان کردن/نمایش هر بخش نمایش داده میشود.
اگر میخواهید تیم خود را معرفی کنید، میتوانید از کامپوننتهای تیم برای ساخت صفحه تیم استفاده کنید. دو راه برای استفاده از این کامپوننتها وجود دارد. یکی اینکه آنها را در صفحه مستندات قرار دهید و دیگری اینکه یک صفحه کامل تیم ایجاد کنید.
اگر میخواهید تیم خود را معرفی کنید، میتوانید از کامپوننتهای تیم برای ساخت صفحه تیم استفاده کنید. دو راه برای استفاده از این کامپوننتها وجود دارد. یکی اینکه آنها را در صفحه مستندات قرار دهید و دیگری اینکه یک صفحه کامل تیم ایجاد کنید.
## نمایش اعضای تیم در یک صفحه
## نمایش اعضای تیم در یک صفحه {#show-team-members-in-a-page}
میتوانید از کامپوننت `<VPTeamMembers>` که از `vitepress/theme` قابل دسترسی است، برای نمایش لیست اعضای تیم در هر صفحهای استفاده کنید.
میتوانید از کامپوننت `<VPTeamMembers>` که از `vitepress/theme` قابل دسترسی است، برای نمایش لیست اعضای تیم در هر صفحهای استفاده کنید.
@ -66,7 +66,7 @@ const members = [
اگر تعداد اعضا بسیار زیاد است یا به سادگی میخواهید بیشتر فضا برای نمایش اعضای تیم داشته باشید، در نظر بگیرید [ایجاد یک صفحه کامل تیم](#create-a-full-team-page).
اگر تعداد اعضا بسیار زیاد است یا به سادگی میخواهید بیشتر فضا برای نمایش اعضای تیم داشته باشید، در نظر بگیرید [ایجاد یک صفحه کامل تیم](#create-a-full-team-page).
## ایجاد یک صفحه کامل تیم
## ایجاد یک صفحه کامل تیم {#create-a-full-team-page}
بجای اضافه کردن اعضای تیم به صفحه مستندات، میتوانید یک صفحه کامل تیم را ایجاد کنید، مشابه اینکه چگونه میتوانید یک [صفحه خانگی سفارشی](./default-theme-home-page) ایجاد کنید.
بجای اضافه کردن اعضای تیم به صفحه مستندات، میتوانید یک صفحه کامل تیم را ایجاد کنید، مشابه اینکه چگونه میتوانید یک [صفحه خانگی سفارشی](./default-theme-home-page) ایجاد کنید.
@ -118,11 +118,9 @@ const members = [
`<VPMembers>` به عنوان زمانی که در یک صفحه مستند استفاده میشود، کار میکند. این لیست اعضا را نمایش میدهد.
`<VPMembers>` به عنوان زمانی که در یک صفحه مستند استفاده میشود، کار میکند. این لیست اعضا را نمایش میدهد.
### اضافه کردن بخشها برای تقسیم اعضای تیم
### اضافه کردن بخشها برای تقسیم اعضای تیم {#add-sections-to-divide-team-members}
میتوانید "بخ
میتوانید بخشها را به صفحه تیم اضافه کنید. به عنوان مثال، ممکن است اعضای مختلف تیمی مانند اعضای تیم اصلی و شرکای اجتماعی داشته باشید. شما میتوانید این اعضا را به بخشها تقسیم کنید تا نقش هر گروه بهتر توضیح داده شود.
شها" را به صفحه تیم اضافه کنید. به عنوان مثال، ممکن است اعضای مختلف تیمی مانند اعضای تیم اصلی و شرکای اجتماعی داشته باشید. شما میتوانید این اعضا را به بخشها تقسیم کنید تا نقش هر گروه بهتر توضیح داده شود.
برای این کار، کامپوننت `<VPTeamPageSection>` را به فایل `team.md` اضافه کنید که قبلاً ایجاد کردیم.
برای این کار، کامپوننت `<VPTeamPageSection>` را به فایل `team.md` اضافه کنید که قبلاً ایجاد کردیم.
@ -162,7 +160,7 @@ const partners = [...]
به یاد داشته باشید که کامپوننت `<VPTeamMembers>` را درون اسلات `#members` قرار دهید.
به یاد داشته باشید که کامپوننت `<VPTeamMembers>` را درون اسلات `#members` قرار دهید.
## `<VPTeamMembers>`
## `<VPTeamMembers>` {#vpteammembers}
کامپوننت `<VPTeamMembers>` لیست دادهشده از اعضا را نمایش میدهد.
کامپوننت `<VPTeamMembers>` لیست دادهشده از اعضا را نمایش میدهد.
@ -218,11 +216,11 @@ interface TeamMember {
}
}
```
```
## `<VPTeamPage>`
## `<VPTeamPage>` {#vpteampage}
کامپوننت ریشه هنگام ایجاد یک صفحه کامل تیم. فقط یک اسلات را قبول میکند. این همه کامپوننتهای مربوط به تیم را استایل میکند.
کامپوننت ریشه هنگام ایجاد یک صفحه کامل تیم. فقط یک اسلات را قبول میکند. این همه کامپوننتهای مربوط به تیم را استایل میکند.
## `<VPTeamPageTitle>`
## `<VPTeamPageTitle>` {#vpteampagetitle}
بخش "عنوان" صفحه را اضافه میکند. بهترین استفاده را در ابتداییترین جای زیر `<VPTeamPage>` داشته باشد. این اسلاتهای `#title` و `#lead` را قبول میکند.
بخش "عنوان" صفحه را اضافه میکند. بهترین استفاده را در ابتداییترین جای زیر `<VPTeamPage>` داشته باشد. این اسلاتهای `#title` و `#lead` را قبول میکند.
@ -239,7 +237,7 @@ interface TeamMember {
</VPTeamPage>
</VPTeamPage>
```
```
## `<VPTeamPageSection>`
## `<VPTeamPageSection>` {#vpteampagesection}
یک "بخش" را درون صفحه تیم ایجاد میکند. اسلاتهای `#title`، `#lead` و `#members` را قبول میکند. میتوانید هر تعداد بخش را درون `<VPTeamPage>` اضافه کنید.
یک "بخش" را درون صفحه تیم ایجاد میکند. اسلاتهای `#title`، `#lead` و `#members` را قبول میکند. میتوانید هر تعداد بخش را درون `<VPTeamPage>` اضافه کنید.
Frontmatter امکان پیکربندی بر اساس صفحه را فراهم میکند. در هر فایل markdown، شما میتوانید از تنظیمات frontmatter برای بازنویسی تنظیمات سطح سایت یا تم استفاده کنید. همچنین، تنظیماتی وجود دارند که فقط میتوانید آنها را در frontmatter تعریف کنید.
Frontmatter امکان پیکربندی بر اساس صفحه را فراهم میکند. در هر فایل markdown، شما میتوانید از تنظیمات frontmatter برای بازنویسی تنظیمات سطح سایت یا تم استفاده کنید. همچنین، تنظیماتی وجود دارند که فقط میتوانید آنها را در frontmatter تعریف کنید.
@ -82,7 +82,7 @@ type HeadConfig =
| [string, Record<string,string>, string]
| [string, Record<string,string>, string]
```
```
## فقط برای تم پیشفرض
## فقط برای تم پیشفرض {#default-theme-only}
گزینههای frontmatter زیر فقط زمانی قابل استفاده هستند که از تم پیشفرض استفاده میکنید.
گزینههای frontmatter زیر فقط زمانی قابل استفاده هستند که از تم پیشفرض استفاده میکنید.
@ -103,11 +103,11 @@ layout: doc
---
---
```
```
### hero <Badgetype="info"text="فقط برای صفحه اصلی"/>
### hero <Badgetype="info"text="فقط برای صفحه اصلی"/> {#hero}
تعیین محتویات بخش hero صفحه اصلی هنگامی که `layout` به `home` تنظیم شده است. جزئیات بیشتر در [تم پیشفرض: صفحه اصلی](./default-theme-home-page).
تعیین محتویات بخش hero صفحه اصلی هنگامی که `layout` به `home` تنظیم شده است. جزئیات بیشتر در [تم پیشفرض: صفحه اصلی](./default-theme-home-page).
### features <Badgetype="info"text="فقط برای صفحه اصلی"/>
### features <Badgetype="info"text="فقط برای صفحه اصلی"/> {#features}
تعیین مواردی که در بخش ویژگیها باید نمایش داده شوند هنگامی که `layout` به `home` تنظیم شده است. جزئیات بیشتر در [تم پیشفرض: صفحه اصلی](./default-theme-home-page).
تعیین مواردی که در بخش ویژگیها باید نمایش داده شوند هنگامی که `layout` به `home` تنظیم شده است. جزئیات بیشتر در [تم پیشفرض: صفحه اصلی](./default-theme-home-page).
ویتپرس چندین API داخلی را ارائه میدهد تا به شما امکان دسترسی به دادههای برنامه را بدهد. همچنین، ویتپرس با چندین کامپوننت داخلی همراه است که میتوانید به صورت جهانی از آنها استفاده کنید.
ویتپرس چندین API داخلی را ارائه میدهد تا به شما امکان دسترسی به دادههای برنامه را بدهد. همچنین، ویتپرس با چندین کامپوننت داخلی همراه است که میتوانید به صورت جهانی از آنها استفاده کنید.
@ -6,7 +6,7 @@
متدهایی که با `use*` آغاز میشوند نشان میدهند که این یک تابع [API ترکیبی Vue 3](https://vuejs.org/guide/introduction.html#composition-api) ("Composable") است که فقط میتواند در `setup()` یا `<script setup>` استفاده شود.
متدهایی که با `use*` آغاز میشوند نشان میدهند که این یک تابع [API ترکیبی Vue 3](https://vuejs.org/guide/introduction.html#composition-api) ("Composable") است که فقط میتواند در `setup()` یا `<script setup>` استفاده شود.
تنظیمات سایت جایی است که میتوانید تنظیمات جهانی سایت را تعریف کنید. گزینههای تنظیمات برنامه شامل تنظیماتی است که برای هر سایت ویتپرس اعمال میشود، صرف نظر از اینکه از چه تمی استفاده میکند. برای مثال، دایرکتوری پایه یا عنوان سایت.
تنظیمات سایت جایی است که میتوانید تنظیمات جهانی سایت را تعریف کنید. گزینههای تنظیمات برنامه شامل تنظیماتی است که برای هر سایت ویتپرس اعمال میشود، صرف نظر از اینکه از چه تمی استفاده میکند. برای مثال، دایرکتوری پایه یا عنوان سایت.
## مروری کلی
## مروری کلی {#overview}
### رفع تنظیمات
### رفع تنظیمات {#config-resolution}
فایل تنظیمات همیشه از `<root>/.vitepress/config.[ext]` رفع میشود، جایی که `<root>` ریشه پروژه ویتپرس شما است و `[ext]` یکی از پسوندهای فایل پشتیبانی شده است. تایپاسکریپت به طور پیشفرض پشتیبانی میشود. پسوندهای پشتیبانی شده شامل `.js`, `.ts`, `.mjs` و `.mts` هستند.
فایل تنظیمات همیشه از `<root>/.vitepress/config.[ext]` رفع میشود، جایی که `<root>` ریشه پروژه ویتپرس شما است و `[ext]` یکی از پسوندهای فایل پشتیبانی شده است. تایپاسکریپت به طور پیشفرض پشتیبانی میشود. پسوندهای پشتیبانی شده شامل `.js`, `.ts`, `.mjs` و `.mts` هستند.
@ -80,7 +80,7 @@ export default defineConfig({
:::
:::
### هوشمندی تنظیمات
### هوشمندی تنظیمات {#config-intellisense}
استفاده از تابع `defineConfig` هوشمندی تایپاسکریپت را برای گزینههای تنظیمات فراهم میکند. فرض کنید IDE شما از آن پشتیبانی میکند، این باید هم در جاوااسکریپت و هم تایپاسکریپت کار کند.
استفاده از تابع `defineConfig` هوشمندی تایپاسکریپت را برای گزینههای تنظیمات فراهم میکند. فرض کنید IDE شما از آن پشتیبانی میکند، این باید هم در جاوااسکریپت و هم تایپاسکریپت کار کند.
@ -92,7 +92,7 @@ export default defineConfig({
})
})
```
```
### تنظیمات تایپشده تم
### تنظیمات تایپشده تم{#typed-theme-config}
به طور پیشفرض، تابع `defineConfig` انتظار دارد نوع تنظیمات تم از تم پیشفرض باشد:
به طور پیشفرض، تابع `defineConfig` انتظار دارد نوع تنظیمات تم از تم پیشفرض باشد:
شما میتوانید نمونه پایه [Markdown-It](https://github.com/markdown-it/markdown-it) را با استفاده از گزینه [markdown](#markdown) در تنظیمات ویتپرس خود پیکربندی کنید.
شما میتوانید نمونه پایه [Markdown-It](https://github.com/markdown-it/markdown-it) را با استفاده از گزینه [markdown](#markdown) در تنظیمات ویتپرس خود پیکربندی کنید.
## متادادههای سایت
## متادادههای سایت {#site-metadata}
### عنوان
### عنوان {#title}
- نوع: `string`
- نوع: `string`
- پیشفرض: `ویتپرس`
- پیشفرض: `ویتپرس`
@ -157,7 +157,7 @@ export default {
عنوان صفحه خواهد بود `سلام | سایت فوقالعاده من`.
عنوان صفحه خواهد بود `سلام | سایت فوقالعاده من`.
### قالب عنوان
### قالب عنوان {##titletemplate}
- نوع: `string | boolean`
- نوع: `string | boolean`
- میتواند به ازای هر صفحه از طریق [frontmatter](./frontmatter-config#titletemplate) جایگزین شود.
- میتواند به ازای هر صفحه از طریق [frontmatter](./frontmatter-config#titletemplate) جایگزین شود.
@ -189,7 +189,7 @@ export default {
این گزینه میتواند به `false` تنظیم شود تا پسوندهای عنوان غیرفعال شوند.
این گزینه میتواند به `false` تنظیم شود تا پسوندهای عنوان غیرفعال شوند.
### توضیحات
### توضیحات {#description}
- نوع: `string`
- نوع: `string`
- پیشفرض: `یک سایت ویتپرس`
- پیشفرض: `یک سایت ویتپرس`
@ -217,7 +217,7 @@ type HeadConfig =
| [string, Record<string,string>, string]
| [string, Record<string,string>, string]
```
```
#### مثال: اضافه کردن یک فاوآیکن
#### مثال: اضافه کردن یک favicon {#example-adding-a-favicon}
```ts
```ts
export default {
export default {
@ -229,7 +229,7 @@ export default {
*/
*/
```
```
#### مثال: اضافه کردن فونتهای گوگل
#### مثال: اضافه کردن فونتهای گوگل {#example-adding-google-fonts}
```ts
```ts
export default {
export default {
@ -256,7 +256,7 @@ export default {
*/
*/
```
```
#### مثال: ثبت یک سرویس ورکر
#### مثال: ثبت یک سرویس ورکر {#example-registering-a-service-worker}
```ts
```ts
export default {
export default {
@ -286,7 +286,7 @@ export default {
*/
*/
```
```
#### مثال: استفاده از گوگل آنالیتیکس
#### مثال: استفاده از گوگل آنالیتیکس {#example-using-google-analytics}
```ts
```ts
export default {
export default {
@ -317,7 +317,7 @@ export default {
*/
*/
```
```
### زبان
### زبان {#lang}
- نوع: `string`
- نوع: `string`
- پیشفرض: `en-US`
- پیشفرض: `en-US`
@ -330,7 +330,7 @@ export default {
}
}
```
```
### پایه
### پایه {#base}
- نوع: `string`
- نوع: `string`
- پیشفرض: `/`
- پیشفرض: `/`
@ -345,9 +345,9 @@ export default {
}
}
```
```
## مسیریابی
## مسیریابی {#routing}
### تمیز کردن URL ها
### cleanUrls
- نوع: `boolean`
- نوع: `boolean`
- پیشفرض: `false`
- پیشفرض: `false`
@ -358,7 +358,7 @@ export default {
فعال کردن این ممکن است نیاز به پیکربندی اضافی در پلتفرم میزبان شما داشته باشد. برای اینکه کار کند، سرور شما باید بتواند `/foo.html` را زمانی که `/foo` بازدید میشود **بدون ریدایرکت** سرو کند.
فعال کردن این ممکن است نیاز به پیکربندی اضافی در پلتفرم میزبان شما داشته باشد. برای اینکه کار کند، سرور شما باید بتواند `/foo.html` را زمانی که `/foo` بازدید میشود **بدون ریدایرکت** سرو کند.
زمانی که به `true` تنظیم شود، فرادادههای صفحات را به یک قسمت جداگانه جاوااسکریپت استخراج میکند به جای درونگذاری آن در HTML اولیه. این کار باعث کاهش بار HTML هر صفحه میشود و فرادادههای صفحات قابل کش شدن میشود، که منجر به کاهش پهنای باند سرور میشود وقتی که صفحات زیادی در سایت دارید.
زمانی که به `true` تنظیم شود، فرادادههای صفحات را به یک قسمت جداگانه جاوااسکریپت استخراج میکند به جای درونگذاری آن در HTML اولیه. این کار باعث کاهش بار HTML هر صفحه میشود و فرادادههای صفحات قابل کش شدن میشود، که منجر به کاهش پهنای باند سرور میشود وقتی که صفحات زیادی در سایت دارید.
زمانی که به `true` تنظیم شود، اپلیکیشن تولید شده در [حالت MPA](../guide/mpa-mode) ساخته خواهد شد. حالت MPA به طور پیشفرض 0 کیلوبایت جاوااسکریپت ارسال میکند، به هزینه غیرفعال کردن ناوبری سمت کاربر و نیاز به opt-in صریح برای تعامل.
زمانی که به `true` تنظیم شود، اپلیکیشن تولید شده در [حالت MPA](../guide/mpa-mode) ساخته خواهد شد. حالت MPA به طور پیشفرض 0 کیلوبایت جاوااسکریپت ارسال میکند، به هزینه غیرفعال کردن ناوبری سمت کاربر و نیاز به opt-in صریح برای تعامل.
## تمسازی
## تمسازی{#theming}
### appearance
### appearance
@ -515,7 +515,7 @@ export default {
وقتی از تم پیشفرض استفاده میکنید، فعال کردن این گزینه زمان آخرین بهروزرسانی هر صفحه را نمایش میدهد. میتوانید متن را از طریق گزینه [`themeConfig.lastUpdatedText`](./default-theme-config#lastupdatedtext) سفارشی کنید.
وقتی از تم پیشفرض استفاده میکنید، فعال کردن این گزینه زمان آخرین بهروزرسانی هر صفحه را نمایش میدهد. میتوانید متن را از طریق گزینه [`themeConfig.lastUpdatedText`](./default-theme-config#lastupdatedtext) سفارشی کنید.
## سفارشیسازی
## سفارشیسازی {#customization}
### markdown
### markdown
@ -559,7 +559,7 @@ export default {
}
}
```
```
## قلابهای ساخت
## قلابهای ساخت{#build-hooks}
قلابهای ساخت ویتپرس به شما امکان اضافه کردن عملکرد و رفتارهای جدید به وبسایت خود را میدهند:
قلابهای ساخت ویتپرس به شما امکان اضافه کردن عملکرد و رفتارهای جدید به وبسایت خود را میدهند:
@ -658,7 +658,7 @@ export default {
}
}
```
```
#### مثال: اضافه کردن یک URL قانونی `<link>`
#### مثال: اضافه کردن یک canonical URL `<link>` {#example-adding-a-canonical-url-link}