Сборка и упаковка

После завершения разработки плагина нужно пройти два этапа — сборку (компиляцию исходного кода) и упаковку (создание файла .tgz), — прежде чем распространять плагин в другие приложения NocoBase.

Сборка плагина

При сборке исходный код на TypeScript из каталога src/ компилируется в JavaScript: клиентская часть собирается через Rsbuild, серверная — через tsup:

yarn build @my-project/plugin-hello

Результаты сборки помещаются в каталог dist/ в корне плагина.

Подсказка

Если плагин создан в исходном репозитории, первая сборка запустит полную проверку типов всего репозитория, что может занять время. Рекомендуется убедиться, что зависимости установлены, а репозиторий находится в собираемом состоянии.

Упаковка плагина

При упаковке результаты сборки сжимаются в файл .tgz, который удобно загружать в другие окружения:

yarn nocobase tar @my-project/plugin-hello

Файл пакета по умолчанию помещается в каталог storage/tar/ с именем <имя-пакета>-<версия>.tgz — например, storage/tar/@my-project/plugin-hello-0.1.0.tgz.

С помощью параметра --tar сборку и упаковку можно выполнить за один шаг:

yarn build @my-project/plugin-hello --tar

Загрузка в другие приложения NocoBase

Загрузите файл .tgz и распакуйте его в каталог ./storage/plugins целевого приложения. Подробнее см. Установка и обновление плагинов.

Если целевое приложение создано с помощью NocoBase CLI (nb init), плагин можно импортировать напрямую командой nb plugin import, не распаковывая архив вручную:

nb plugin import /your/path/plugin-hello-0.1.0.tgz

Включение плагина по умолчанию

После загрузки плагин не активируется автоматически — он появится в «Менеджере плагинов» и его потребуется включить вручную. Если вы поддерживаете собственное приложение NocoBase и хотите, чтобы плагин активировался вместе с приложением по умолчанию, можно использовать переменную среды APPEND_PRESET_BUILT_IN_PLUGINS (добавить встроенные плагины). Подробнее см. в разделе Предустановка и включение плагина по умолчанию.

Пользовательская конфигурация сборки

Как правило, конфигурации сборки по умолчанию достаточно. Если вам нужно её настроить — например, изменить точку входа сборки, добавить псевдонимы или скорректировать параметры сжатия, — создайте файл build.config.ts в корневом каталоге плагина:

import { defineConfig } from '@nocobase/build';

export default defineConfig({
  modifyRsbuildConfig: (config) => {
    // Изменение конфигурации сборки Rsbuild для клиентской части (src/client-v2)
    // Справка: https://rsbuild.rs/guide/configuration/rsbuild
    return config;
  },
  modifyTsupConfig: (config) => {
    // Изменение конфигурации сборки tsup для серверной части (src/server)
    // Справка: https://tsup.egoist.dev/#using-custom-configuration
    return config;
  },
  beforeBuild: (log) => {
    // Функция обратного вызова перед началом сборки: например, очистка временных файлов или генерация кода
  },
  afterBuild: (log) => {
    // Функция обратного вызова после завершения сборки: например, копирование дополнительных ресурсов или вывод статистики
  },
});

Несколько ключевых моментов:

  • modifyRsbuildConfig — позволяет настроить сборку клиентской части: добавить плагины Rsbuild, изменить псевдонимы resolve, скорректировать стратегию разделения кода и т. д. Параметры конфигурации см. в документации Rsbuild
  • modifyTsupConfig — позволяет настроить сборку серверной части: изменить target, externals, entry и т. д. Параметры конфигурации см. в документации tsup
  • beforeBuild / afterBuild — хуки до и после сборки, получающие функцию log для вывода в журнал. Например, в beforeBuild можно сгенерировать файлы кода, а в afterBuild — скопировать статические ресурсы в каталог с результатами сборки

Связанные ссылки