Перейти к основному содержанию

Обзор

Новое приложение, сгенерированное с помощью twenty app init, выглядит так:

Ключевые файлы

Организация файлов — на ваше усмотрение. Приведенные выше папки являются соглашениями — CLI обнаруживает сущности с помощью AST-анализа вызовов export default defineEntity(...) независимо от того, где расположен файл.

Зависимости

Пакеты Twenty SDK и UI должны находиться в devDependencies:
twenty app init привязывает twenty-sdk, twenty-client-sdk и twenty-ui к собственной версии. При обновлении синхронизируйте все три.
  • twenty-sdk предоставляет определения приложений, вспомогательные средства среды выполнения и интеграцию с рендерером. Используйте отдельно установленный пакет twenty для команд CLI и инструментов сборки/создания шаблонов.
  • twenty-client-sdk действительно импортируется кодом вашего приложения (CoreApiClient, MetadataApiClient, RestApiClient), но Twenty предоставляет его во время выполнения — функции логики получают его из сгенерированного слоя SDK, а фронтенд‑компоненты получают его из модулей, отдаваемых сервером. Установленная вами копия используется только для проверки типов и сборки на этапе деплоя, поэтому её не нужно включать в развертываемый бандл.
Если любой из пакетов находится в dependencies, он попадает в бандл среды выполнения установленного приложения, где он является лишним грузом. twenty app build выдаёт предупреждение, если любой из них всё ещё указан в dependencies. Добавляйте собственные зависимости среды выполнения вашего приложения (библиотеки, которые ваши функции логики действительно импортируют во время выполнения) в dependencies, как обычно. Держите дерево лёгким: dependencies устанавливаются в слой выполнения с ограничением 250 МБ в распакованном виде, и операция синхронизации или установки завершается ошибкой размера зависимостей при превышении этого лимита — UI-библиотеки и инструменты разработки должны находиться в devDependencies.