Манифест расширения
Манифест — это объект, который вы передаёте в 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.
Подробнее: Сборка и упаковка.