Использование пакетов npm
Вы можете устанавливать и использовать любые пакеты npm в своём приложении. И логические функции, и компоненты фронтенда собираются с помощью esbuild, который встраивает все зависимости в выходной файл — каталогиnode_modules во время выполнения не нужны.
Установка пакета
src/logic-functions/fetch-data.ts
src/front-components/chart.tsx
Как работает бандлинг
Этап сборки использует esbuild для создания одного самодостаточного файла на каждую логическую функцию и на каждый компонент фронтенда. Все импортированные пакеты встроены в бандл. Логические функции выполняются в среде Node.js. Встроенные модули Node (fs, path, crypto, http и т. д.) доступны и не требуют установки.
Компоненты фронтенда выполняются в Web Worker. Встроенные модули Node недоступны — доступны только браузерные API и пакеты npm, работающие в браузерной среде.
В обеих средах доступны как предварительно предоставленные модули twenty-client-sdk/core и twenty-client-sdk/metadata — они не включаются в бандл, а подставляются сервером во время выполнения.
Настройка
Приложение, созданное скэффолдером, уже включает Vitest. Если вы настраиваете его вручную, установите зависимости:vitest.config.ts в корне вашего приложения:
vitest.config.ts
src/__tests__/setup-test.ts
Программные API SDK
Подпутьtwenty-sdk/cli экспортирует функции, которые можно вызывать напрямую из тестового кода:
| Функция | Описание |
|---|---|
appBuild | Собрать приложение и при необходимости упаковать tar-архив |
appDeploy | Загрузить tar-архив на сервер |
appInstall | Установить приложение в активное рабочее пространство |
appUninstall | Удалить приложение из активного рабочего пространства |
success: boolean и либо data, либо error.
Написание интеграционного теста
Полный пример, который собирает, разворачивает и устанавливает приложение, а затем проверяет, что оно появляется в рабочем пространстве:src/__tests__/app-install.integration-test.ts
Запуск тестов
Убедитесь, что ваш локальный сервер Twenty запущен, затем:Проверка типов
Вы также можете запустить проверку типов для своего приложения без запуска тестов:tsc --noEmit и сообщает о любых ошибках типов.
CI с GitHub Actions
Скэффолдер генерирует готовый к использованию рабочий процесс GitHub Actions в.github/workflows/ci.yml. Он автоматически запускает ваши интеграционные тесты при каждом пуше в main и в pull request’ах.
Рабочий процесс:
- Извлекает ваш код
- Поднимает временный сервер Twenty с помощью экшена
twentyhq/twenty/.github/actions/spawn-twenty-docker-image - Устанавливает зависимости с помощью
yarn install --immutable - Запускает
yarn testсTWENTY_API_URLиTWENTY_API_KEY, переданными из выходных данных экшена
.github/workflows/ci.yml
spawn-twenty-docker-image запускает эфемерный сервер Twenty прямо в раннере и выводит данные для подключения. Секрет GITHUB_TOKEN предоставляется GitHub автоматически.
Чтобы закрепить конкретную версию Twenty вместо latest, измените переменную окружения TWENTY_VERSION в начале рабочего процесса.