Сайт

Манифест

Манифест — это 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 для разовой покупки.

Цена в манифест не входит — она задаётся в панели «Монетизация». Больше ифнормации — в разделе Монетизация.