extension.ts
Поле main задаёт путь к входному файлу вашего расширения. Этот файл экспортирует функцию activate, которая выполняется при активации расширения, а также может экспортировать необязательную функцию deactivate. Внутри входного файла вы используете глобально доступный sdk.
import type { ExtensionContext } from '@fragmenta/extension'
export function activate(context: ExtensionContext) {
context.subscriptions.push(
sdk.commands.registerCommand('openTriggerView', () => {
// откройте view, выполните логику, ...
}),
)
}
export function deactivate() {}
- С помощью
sdkможно регистрировать такие вещи, как команды, оркестраторы и т. д. - Вы можете добавлять каждый disposable-объект (любой ресурс, который нужно освободить или очистить позже) в массив
context.subscriptions. При деактивации расширения, Fragmenta автоматически освободит каждый элемент в этом массиве, так что вам не придётся очищать их вручную.
Объект context
activate получает ExtensionContext, который содержит все данные, которые вашему расширению нужно знать о себе и о том, где оно выполняется.
| Поле | Описание |
| --- | --- |
| subscriptions | Это поле содержит disposable-объекты, которые очищаются при деактивации. В него также помещаются команды, listeners и watchers. |
| extension | Это поле содержит идентификационные данные и манифест расширения (id, name, version, publisher ...). |
| extensionUri / extensionPath | Это поле содержит путь к вашему расширению на жёстком диске. |
| asAbsolutePath(rel) | Это поле преобразует путь, входящий в состав вашего расширения, в абсолютный путь. |
| platform | win32 | darwin | linux | web | unknown. |
| env | Это поле содержит среду выполнения. Дополнительную информацию см. ниже. |
context.env
| Поле | Описание |
| --- | --- |
| channel | Это поле содержит канал сборки: release | dev | preview. Вы можете разграничить поведение по каналам. |
| platform | Это поле содержит то же значение, что и context.platform. |
| isDesktop / isWeb | Это поле содержит информацию о том, запускается ли Fragmenta как десктопное приложение или в браузере. |
| isWindows / isMac / isLinux | Удобные флаги ОС. |
| userAgent | Сырая строка user-agent. |
export function activate(context: ExtensionContext) {
if (context.env.channel === 'dev') {
// включить экспериментальное поведение только на канале dev
}
if (context.env.isDesktop) {
// функции только для desktop
}
}
Полный API — в SDK Reference.