Плагины
Плагины Starlight могут настраивать конфигурацию, пользовательский интерфейс и поведение Starlight, а также легко распространяться и использоваться повторно. На этой справочной странице описаны API, к которым имеют доступ плагины.
Подробнее об использовании плагинов Starlight можно узнать в разделе Конфигурация или на Витрине плагинов, чтобы посмотреть список доступных плагинов.
Краткая справка по API
Плагин Starlight имеет следующую форму. Подробнее о различных свойствах и параметрах хуков см. ниже.
name
тип: string
Плагин должен иметь уникальное имя, описывающее его. Имя используется при регистрации сообщений, связанных с этим плагином, и может использоваться другими плагинами для определения присутствия этого плагина.
hooks
Хуки — это функции, которые Starlight вызывает для запуска кода плагина в определённое время. В настоящее время Starlight поддерживает единственный хук setup
.
hooks.setup
Функция настройки плагина, вызываемая при инициализации Starlight (во время выполнения хука интеграции astro:config:setup
).
Хук setup
можно использовать для обновления конфигурации Starlight или добавления интеграций Astro.
Этот хук вызывается со следующими параметрами:
config
тип: StarlightUserConfig
Доступная только для чтения копия предоставленной пользователем конфигурации Starlight. Эта конфигурация могла быть обновлена другими плагинами, настроенными до текущего.
updateConfig
тип: (newConfig: StarlightUserConfig) => void
Функция обратного вызова для обновления предоставленной пользователем конфигурации Starlight. Укажите ключи конфигурации корневого уровня, которые вы хотите отменить. Чтобы обновить значения вложенной конфигурации, необходимо предоставить весь вложенный объект.
Чтобы расширить существующий параметр конфигурации, не переопределяя его, добавьте существующее значение в новое.
В следующем примере к существующей конфигурации добавляется новый медиааккаунт social
путём распространения config.social
на новый объект social
:
addIntegration
тип: (integration: AstroIntegration) => void
Функция обратного вызова для добавления Astro integration, необходимой плагину.
В следующем примере плагин сначала проверяет, настроена ли интеграция Astro с React, и, если нет, использует addIntegration()
для её добавления:
astroConfig
тип: AstroConfig
Доступная только для чтения копия предоставленной пользователем конфигурации Astro.
command
тип: 'dev' | 'build' | 'preview'
Команда, используемая для запуска Starlight:
dev
— Проект выполняется с помощьюastro dev
.build
— Проект выполняется с помощьюastro build
.preview
— Проект выполняется сastro preview
.
isRestart
тип: boolean
false
при запуске dev-сервера, true
при перезагрузке.
Частыми причинами перезапуска являются редактирование пользователем файла astro.config.mjs
во время работы dev-сервера.
logger
тип: AstroIntegrationLogger
Экземпляр логгера интеграции Astro, который можно использовать для записи журналов. Все сообщения в журнале будут иметь префикс с названием плагина.
В приведённом выше примере в журнал будет выведено сообщение, включающее в себя предоставленное информационное сообщение:
injectTranslations
тип: (translations: Record<string, Record<string, string>>) => void
Функция обратного вызова для добавления или обновления строк перевода, используемых в API локализации Starlight.
В следующем примере плагин инжектирует переводы для пользовательской строки пользовательского интерфейса с именем myPlugin.doThing
для локалей en
и ru
:
Чтобы использовать инжектированные переводы в пользовательском интерфейсе плагина, следуйте руководству Использование переводов пользовательского интерфейса.
Типы для инжектируемых строк перевода плагина генерируются автоматически в проекте пользователя, но ещё не доступны при работе с кодовой базой вашего плагина.
Чтобы ввести объект locals.t
в контексте вашего плагина, объявите следующие глобальные пространства имён в файле декларации TypeScript:
Вы также можете определить типы интерфейса StarlightApp.I18n
из исходного файла, если у вас есть объект, содержащий ваши переводы.
Например, учитывая следующий исходный файл:
Следующее объявление будет определять типы по английским ключам в исходном файле: