تخطَّ إلى المحتوى

إعداد Astro

لا تحتفظ مستودعات المحتوى بملف astro.config.mjs الخاص بها. بدلاً من ذلك، تستورد مصنع إعداد من حزمة npm الخاصة بـ @f5-sales-demo/docs-theme والذي يُعيد إعداد Astro كاملاً مع Starlight وثمانية مكونات إضافية مدمجة وجميع الإعدادات الافتراضية للسمة.

ملف astro.config.mjs في مستودع المحتوى (المُقدَّم بواسطة منشئ Docker) هو غلاف خفيف:

import { createF5xcDocsConfig } from '@f5-sales-demo/docs-theme/config';
export default createF5xcDocsConfig();

يتم إجراء جميع عمليات التخصيص من خلال كائن الخيارات أو متغيرات البيئة — لا حاجة للتعامل مع توصيل المكونات الإضافية أو استيرادات CSS أو تجاوزات المكونات.

تقبل createF5xcDocsConfig كائناً من نوع F5xcDocsConfigOptions. كل حقل اختياري؛ تملأ متغيرات البيئة والقيم الافتراضية المنطقية الفراغات.

interface F5xcDocsConfigOptions {
site?: string;
base?: string;
title?: string;
description?: string;
githubRepository?: string;
llmsOptionalLinks?: Array<{ title: string; url: string }>;
additionalIntegrations?: AstroIntegration[];
additionalRemarkPlugins?: Array<unknown>;
megaMenuItems?: MegaMenuItem[];
head?: HeadEntry[];
logo?: { src: string } | { light: string; dark: string };
}
الخيارالقيمة الافتراضية / متغير البيئة البديلالغرض
siteDOCS_SITE أو https://f5-sales-demo.github.ioعنوان URL الأساسي الكنسي
baseDOCS_BASE أو /مسار URL الأساسي لمواقع المشاريع
titleDOCS_TITLE أو Documentationعنوان الموقع في الرأس وعلامة تبويب المتصفح
descriptionDOCS_DESCRIPTION أو سلسلة فارغةوصف الموقع للبيانات الوصفية وملف llms.txt
githubRepositoryGITHUB_REPOSITORY أو سلسلة فارغةيُتيح روابط التعديل وأيقونة GitHub الاجتماعية
llmsOptionalLinksLLMS_OPTIONAL_LINKS (JSON) أو []روابط إضافية للمكوِّن الإضافي llms.txt
additionalIntegrations[]تكاملات Astro إضافية لإلحاقها
additionalRemarkPlugins[]مكونات remark إضافية تُضاف بعد remark-mermaid
megaMenuItemsقائمة Products/Solutions/Docs/Support المدمجةمدخلات القائمة المنسدلة الكبيرة على المستوى الأعلى
headوسم <script> لـ Mermaid CDNإدخالات <head> مخصصة
logo@f5-sales-demo/docs-theme/assets/github-avatar.pngشعار الشريط الجانبي (مصدر واحد أو زوج فاتح/داكن)

مكونات Starlight الإضافية المدمجة

Section titled “مكونات Starlight الإضافية المدمجة”

يقوم المصنع بتوصيل ثمانية مكونات Starlight الإضافية تلقائياً:

المكوِّن الإضافيالغرض
starlight-mega-menuقائمة تنقل منسدلة كبيرة بتخطيطات شبكية وقائمية
starlight-videosتضمين مقاطع الفيديو في صفحات التوثيق
starlight-image-zoomتكبير الصور عند النقر عليها
@f5-sales-demo/docs-theme (ذاتي)حقن CSS وتجاوزات المكونات ووسيط المسارات
starlight-scroll-to-topزر التمرير إلى الأعلى مع حلقة التقدم
starlight-heading-badgesتعليقات الشارات على العناوين
starlight-page-actionsأزرار إجراءات الصفحة
starlight-plugin-iconsدعم الأيقونات في Starlight
starlight-llms-txtيُنشئ ملفَي llms.txt وllms-full.txt لاستهلاك LLM

تُسجَّل هذه المكونات بالترتيب داخل config.ts. المكوِّن الإضافي للسمة (@f5-sales-demo/docs-theme) هو نفسه مكوِّن Starlight إضافي يعمل ضمن هذه القائمة.

خطاف مكوِّن السمة الإضافي

Section titled “خطاف مكوِّن السمة الإضافي”

يُعرَّف مكوِّن السمة الإضافي في index.ts ويُسجَّل ضمن المكونات الإضافية المدمجة أعلاه. يقوم خطاف config:setup الخاص به بثلاثة أشياء:

  1. حقن CSS — يُضيف fonts/font-face.css وstyles/custom.css مسبقاً إلى مصفوفة customCss الخاصة بـ Starlight
  2. تجاوز المكونات — يستبدل خمسة مكونات Starlight:
    • Banner — تنقل عبر مسار التنقل التفصيلي مع رابط التعديل
    • EditLink — فارغ عمداً (رابط التعديل موجود في Banner)
    • Footer — روابط وسائل التواصل الاجتماعي مُلحقة أسفل التذييل الافتراضي
    • SiteTitle — الشعار مع رابط الصفحة الرئيسية
    • MarkdownContent — غلاف يُتيح مقاطع الفيديو وتكبير الصور
  3. إضافة وسيط المسارات — يُسجِّل route-middleware.ts الذي يُصفِّي صفحات الفهرس من الشريط الجانبي ويُخفي جدول المحتويات في صفحات الفهرس
// index.ts — Starlight plugin entry point
export default function f5xcDocsTheme(): StarlightPlugin {
return {
name: '@f5-sales-demo/docs-theme',
hooks: {
'config:setup'({ config, updateConfig, addRouteMiddleware }) {
addRouteMiddleware({
entrypoint: '@f5-sales-demo/docs-theme/route-middleware',
order: 'pre',
});
updateConfig({
customCss: [
...(config.customCss ?? []),
'@f5-sales-demo/docs-theme/fonts/font-face.css',
'@f5-sales-demo/docs-theme/styles/custom.css',
],
components: {
...config.components,
Banner: '@f5-sales-demo/docs-theme/components/Banner.astro',
EditLink: '@f5-sales-demo/docs-theme/components/EditLink.astro',
Footer: '@f5-sales-demo/docs-theme/components/Footer.astro',
SiteTitle: '@f5-sales-demo/docs-theme/components/SiteTitle.astro',
MarkdownContent: '@f5-sales-demo/docs-theme/components/MarkdownContent.astro',
},
});
},
},
};
}

تستخدم جميع المسارات مُحدِّدات حزم npm (مثل @f5-sales-demo/docs-theme/styles/custom.css) التي يتم حلها من خلال خريطة exports في package.json.

إلى جانب Starlight ومكوناته الإضافية، يُسجِّل المصنع أيضاً:

  • @astrojs/react — يُتيح دعم مكونات React في صفحات MDX
  • remark-mermaid — مكوِّن remark مخصص يحوِّل كتل الكود ```mermaid إلى مخططات مُصيَّرة

يمكن إلحاق تكاملات ومكونات remark إضافية عبر خيارَي additionalIntegrations وadditionalRemarkPlugins.

لم يُعرَّف أي شريط جانبي مخصص. يُنشئ Starlight الشريط الجانبي تلقائياً من هيكل الملفات في docs/، مستخدماً بيانات title الأمامية لكل صفحة كنص الرابط وsidebar.order للفرز. يُصفِّي وسيط المسارات صفحات الفهرس من الشريط الجانبي تلقائياً.