Обзор
Новое приложение, сгенерированное с помощью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.