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

إعداد 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قائمة المنتجات/الحلول/المستندات/الدعم المدمجةإدخالات القائمة الضخمة من المستوى الأعلى
headوسم <script> لـ Mermaid CDNإدخالات <head> مخصصة
logo@f5-sales-demo/docs-theme/assets/github-avatar.pngشعار الشريط الجانبي (مصدر واحد أو زوج فاتح/داكن)

يقوم المصنع بتوصيل ثماني إضافات 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 لاستهلاك نماذج اللغة الكبيرة

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

تُعرَّف إضافة السمة في 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 في frontmatter لكل صفحة كنص الرابط وsidebar.order للترتيب. يُصفّي وسيط المسارات صفحات الفهرس من الشريط الجانبي تلقائياً.