nuckty
EN
Все разделы →

Расширения

Расширения добавляют nuckty новые возможности. Пакет или локальный модуль экспортирует точку входа register(env) и через фасады движка регистрирует эти возможности. Доступны пять точек расширения.

Пять точек

ТипЧто расширяетТочка входа
pipelineСтадии сборкиenv.pipeline
markdownПреобразование Markdown → BEMJSONenv.markdown
blockНабор БЭМ-блоковenv.levels
commandКоманды CLIenv.commands
documentДанные страницы → BEMTree документаenv.document

Один пакет может сочетать несколько типов в одном register. Например, расширение для документации сразу добавляет блок оглавления, конструкцию markdown-разметки :::callout и стадию поискового индекса.

register(env)

В глобальном config/config-nuckty.ts укажите пакеты npm или локальные модули расширений. Движок загружает их по порядку и вызывает именованный register, а при его отсутствии — функцию по умолчанию.

import { defineNucktyConfig } from 'nuckty';

export default defineNucktyConfig({
    targets: { main: { configDir: 'config/', outDir: 'site/' } },
    ext: ['nuckty-ext-block-root', './ext/search.ts'],
});

Расширения выполняются с правами процесса сборки; фасады не изолируют их код. Для локального каталога загрузчик выбирает корневой exports из package.json по активным условиям Node ESM в порядке объявления, включая вложенные условия. Совпавший null запрещает загрузку; путь в exports должен оставаться внутри каталога пакета. Если exports отсутствует, загрузчик использует main. Локальные файлы можно подключать напрямую.

Как выбрать тип

  • Нужна новая стадия сборки (поисковый индекс, лента RSS, обработка артефакта) → pipeline.
  • Нужна конструкция markdown-разметки (:::gallery, :::callout, видео) → markdown.
  • Нужен набор блоков (компоненты интерфейса, документационные блоки) → block.
  • Нужна команда CLI (nuckty deploy-ftp, nuckty serve, nuckty validate) → command.
  • Нужен обработчик документа → document.

Готовые расширения собраны в каталоге.

Для каждой сборки нужен один обработчик документа. Стандартный nuckty-ext-block-root регистрирует его и уровень блоков; собственный обработчик может обойтись без root. Он получает DocumentData (page, content, sitemap, assets, alternates, target, lang).