Перейти к основному содержанию
Новое приложение, сгенерированное с помощью npx create-twenty-app, выглядит так:
my-twenty-app/
  package.json
  src/
    application-config.ts                   # Required — your app's entry point
    default-role.ts                         # Permissions for logic functions
    constants/
      universal-identifiers.ts              # Auto-generated UUIDs and metadata
    __tests__/
      setup-test.ts
      app-install.integration-test.ts
  .github/workflows/ci.yml                  # GitHub Actions
  public/                                   # Static assets
  vitest.config.ts                          # Test runner config
  tsconfig.json, tsconfig.spec.json
  .nvmrc, .yarnrc.yml, .oxlintrc.json
  README.md, LLMS.md

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

Файл / ПапкаНазначение
src/application-config.tsОбязательно. Основной файл конфигурации для вашего приложения.
src/default-role.tsРоль по умолчанию, контролирующая, к чему имеют доступ ваши логические функции.
src/constants/universal-identifiers.tsАвтоматически генерируемые UUID и метаданные (отображаемое имя, описание).
src/__tests__/Интеграционные тесты (настройка + пример теста).
public/Статические ресурсы (изображения, шрифты), обслуживаемые вместе с вашим приложением.
Организация файлов — на ваше усмотрение. Приведенные выше папки являются соглашениями — SDK обнаруживает сущности с помощью AST-анализа вызовов export default defineEntity(...) независимо от того, где расположен файл.

Зависимости

Оба пакета Twenty SDK должны находиться в devDependencies, а не в dependencies:
{
  "dependencies": {},
  "devDependencies": {
    "twenty-client-sdk": "^2.13.0",
    "twenty-sdk": "^2.13.0"
  }
}
  • twenty-sdk поставляет twenty CLI и инструменты сборки/скэффолдинга. Он выполняется только на этапах разработки и сборки и никогда не импортируется во время выполнения опубликованного приложения.
  • twenty-client-sdk действительно импортируется кодом вашего приложения (CoreApiClient, MetadataApiClient, RestApiClient), но Twenty предоставляет его во время выполнения — функции логики получают его из сгенерированного слоя SDK, а фронтенд‑компоненты получают его из модулей, отдаваемых сервером. Установленная вами копия используется только для проверки типов и сборки на этапе деплоя, поэтому её не нужно включать в развертываемый бандл.
Если любой из пакетов находится в dependencies, он попадает в бандл среды выполнения установленного приложения, где он является лишним грузом. twenty build выдаёт предупреждение, если любой из них всё ещё указан в dependencies. Добавляйте собственные зависимости среды выполнения вашего приложения (библиотеки, которые ваши функции логики действительно импортируют во время выполнения) в dependencies, как обычно.