Skip to content

Манифест расширения

Манифест — это объект, который вы передаёте в ryntExtensionViteConfig({ manifest: { … } }). Из него при сборке формируется dist/manifest.json, по которому лаунчер понимает id, версию, зависимости и вклад расширения.

Типы полей совместимы с RyntExtensionManifestParsed в @rynt/sdk (экспорт manifest).

Обязательные и частые поля

ПолеОписание
idСтабильный идентификатор расширения (например @acme/my-pack). Совпадает с тем, что вы используете в resolvedNavigationPath(id, …).
name, descriptionОтображаемые имя и описание.
authorИмя автора (строка) — UI лаунчера и маркетплейс.
iconЛокальный путь (./assets/icon.png) или URL/data: — см. Сборка и упаковка.
mainИмя entry-файла после сборки (часто index.js).
engines.ryntДиапазон версий лаунчера (semver).
extensionApiВерсия контракта API: "1" (целое, не semver). См. Extension API.
versionМожет браться из package.json, если не дублируете в manifest.

Зависимости между расширениями

extensionDependencies — словарь { "<manifest.id зависимости>": "<semver range>" }.

Лаунчер использует это, чтобы загрузить и выполнить setup зависимостей раньше вашего расширения. Указывайте только те пакеты, которые реально нужны в рантайме.

Вклад в платформу (contributes.rynt)

Объект contributes.rynt (после нормализации) поддерживает:

  • declaresRegistries — реестры, которые расширение создаёт для других.
  • extendsRegistries — реестры, которые расширение пополняет, с явным списком keys.

Подробнее: Контракт манифеста.

Неверная структура отфильтруется при загрузке; при разработке полезно гнать валидацию через API validateRyntManifestContributes / applyValidatedRyntContributesToManifest из @rynt/sdk/extension (если собираете манифест отдельно от Vite).

Связь с package.json

Пресет @rynt/extension-build сливает в итоговый dist/manifest.json поля из package.json (version, name, …), если вы их не продублировали в manifest. Отдельный manifest.json в корне пакета не нужен — источник правды в vite.config.ts.

Подробнее: Сборка и упаковка.

См. также