Манифест
Манифест — это package.json расширения. Он объявляет идентичность расширения и что он добавляет.
Поля
name,publisher,version— идентичность (обязательно).engines.sdk— целевая версия SDK (обязательно).displayName— имя, отображаемое пользователям (рекомендуется).main— входной файл.contributes— что добавляет.git— привязать extension к Git-remote, чтобы релизы могли пушить тегированную версию.billing— платный extension с разовой покупкой. См. Монетизация.description,activationEvents,categories,extensionDependencies— опционально.
Пример
{
"name": "workflow-orchestrator",
"publisher": "fragmenta.official",
"version": "0.0.31",
"displayName": "Workflow Orchestrator",
"engines": { "sdk": "0.0.0" },
"main": "dist/extension.js",
"contributes": {
"commands": [{ "command": "openTriggerView", "title": "Open Trigger View" }]
}
}
Справочник полей
Fragmenta требует только name, publisher, version и engines; остальное — опционально.
{
"type": "object",
"required": ["name", "publisher", "version", "engines"],
"properties": {
"name": { "type": "string" },
"publisher": { "type": "string" },
"version": { "type": "string" },
"displayName": { "type": "string" },
"description": { "type": "string" },
"engines": {
"type": "object",
"required": ["sdk"],
"properties": { "sdk": { "type": "string" } }
},
"main": { "type": "string" },
"icon": { "type": "string" },
"contributes": { "type": "object" },
"activationEvents": { "type": "array", "items": { "type": "string" } },
"categories": { "type": "array", "items": { "type": "string" } },
"extensionDependencies": { "type": "object", "additionalProperties": { "type": "string" } },
"git": {
"type": "object",
"properties": {
"repo": { "type": "string" },
"provider": { "enum": ["github", "gitlab"] },
"defaultBranch": { "type": "string" },
"commit": { "type": "string" }
}
},
"billing": {
"type": "object",
"required": ["model", "type"],
"properties": {
"model": { "enum": ["paid"] },
"type": { "enum": ["one-time"] }
}
}
}
}
Git remote
git привязывает расширение к репозиторию, чтобы публикация одновременно запускала коммит, ставила тег v{version} и пушила релиз. Эта информация также отображается в деталях публикации.
{
"git": {
"repo": "https://github.com/acme/my-extension.git",
"provider": "github",
"defaultBranch": "main"
}
}
repo— URL репозитория.provider—githubилиgitlab.defaultBranch— ветка, в которую пушат релизы.commit— SHA закоммиченного релиза.
Удалённый доступ можно также добавить из панели «Контроль версий» через «Добавить remote…» — она пропишет git.repo за вас.
Billing
billing делает расширение платным. Без него расширение бесплатное. Подписки и платные функции не поддерживаются.
{
"billing": {
"model": "paid",
"type": "one-time"
}
}
model—paidпродаёт само расширение.type—one-timeдля разовой покупки.
Цена в манифест не входит — она задаётся в панели «Монетизация». Больше ифнормации — в разделе Монетизация.