Référence des modules d'extension
Les modules d’extension Starlight peuvent personnaliser la configuration, l’interface utilisateur et le comportement de Starlight, tout en étant faciles à partager et à réutiliser. Cette page de référence documente l’API à laquelle ces modules d’extension ont accès.
Consultez la référence de configuration pour en savoir plus sur l’utilisation d’un module d’extension Starlight ou visitez la vitrine des modules d’extension pour voir une liste de modules d’extension disponibles.
Référence rapide de l’API
Un module d’extension Starlight a la forme suivante. Voir ci-dessous pour plus de détails sur les différentes propriétés et paramètres des hooks.
name
Type : string
Un module d’extension doit fournir un nom unique qui le décrit. Le nom est utilisé lors de l’affichage des messages liés à ce module d’extension et peut être utilisé par d’autres modules d’extension pour détecter la présence de ce dernier.
hooks
Les hooks sont des fonctions que Starlight appelle pour exécuter le code du module d’extension à des moments spécifiques. Actuellement, Starlight prend en charge un seul hook setup
.
hooks.setup
La fonction de configuration du module d’extension appelée lorsque Starlight est initialisé (pendant le hook astro:config:setup
de l’intégration).
Le hook setup
peut être utilisé pour mettre à jour la configuration de Starlight ou ajouter des intégrations Astro.
Ce hook est appelé avec les options suivantes :
config
Type : StarlightUserConfig
Une copie en lecture seule de la configuration de Starlight fournie par l’utilisateur. Cette configuration peut avoir été mise à jour par d’autres modules d’extension configurés avant celui en cours.
updateConfig
Type : (newConfig: StarlightUserConfig) => void
Une fonction de rappel pour mettre à jour la configuration de Starlight fournie par l’utilisateur. Spécifiez les clés de configuration de niveau racine que vous souhaitez remplacer. Pour mettre à jour des valeurs de configuration imbriquées, vous devez fournir l’objet imbriqué entier.
Pour étendre une option de configuration existante sans la remplacer, étendez la valeur existante dans votre nouvelle valeur.
Dans l’exemple suivant, un nouveau compte de média social
est ajouté à la configuration existante en étendant config.social
dans le nouvel objet social
:
addIntegration
Type : (integration: AstroIntegration) => void
Une fonction de rappel pour ajouter une intégration Astro requise par le module d’extension.
Dans l’exemple suivant, le module d’extension vérifie d’abord si l’intégration React d’Astro est configurée et, si ce n’est pas le cas, utilise addIntegration()
pour l’ajouter :
astroConfig
Type : AstroConfig
Une copie en lecture seule de la configuration d’Astro fournie par l’utilisateur.
command
Type : 'dev' | 'build' | 'preview'
La commande utilisée pour exécuter Starlight :
dev
- Le projet est exécuté avecastro dev
build
- Le projet est exécuté avecastro build
preview
- Le projet est exécuté avecastro preview
isRestart
Type : boolean
false
lorsque le serveur de développement démarre, true
lorsqu’un rechargement est déclenché.
Les raisons courantes d’un redémarrage incluent un utilisateur qui modifie son fichier astro.config.mjs
pendant que le serveur de développement est en cours d’exécution.
logger
Type : AstroIntegrationLogger
Une instance du journaliseur (logger) d’intégration Astro que vous pouvez utiliser pour écrire des messages de journalisation. Tous les messages seront préfixés par le nom du module d’extension.
L’exemple ci-dessus affichera un message qui inclut le message d’information fourni :
injectTranslations
Type : (translations: Record<string, Record<string, string>>) => void
Une fonction de rappel pour ajouter ou mettre à jour des chaînes de traduction utilisées dans les API de localisation de Starlight.
Dans l’exemple suivant, un module d’extension injecte des traductions pour une chaîne d’interface utilisateur personnalisée nommée myPlugin.doThing
pour les locales en
et fr
:
Pour utiliser les traductions injectées dans l’interface utilisateur de votre module d’extension, suivez le guide « Utiliser les traductions de l’interface utilisateur ».
Le typage des chaînes de traduction injectées pour un module d’extension est généré automatiquement dans le projet d’un utilisateur, mais n’est pas encore disponible lors du développement dans le code source de votre module d’extension.
Pour typer l’objet locals.t
dans le contexte de votre module d’extension, déclarez les espaces de noms globaux suivants dans un fichier de déclaration TypeScript :
Vous pouvez également inférer le typage de l’interface StarlightApp.I18n
à partir d’un fichier source si vous avez un objet contenant vos traductions.
Par exemple, étant donné le fichier source suivant :
La déclaration suivante inférerait le typage à partir des clés anglaises dans le fichier source :