Требования
- Node.js 24.5+ — Скачать здесь
- Yarn 4 — поставляется вместе с Node.js через Corepack. Включите его, выполнив
corepack enable - Docker — Скачать здесь. Требуется для запуска локального экземпляра Twenty. Пропустите, если у вас уже запущен Twenty в другом месте.
Фаза 1 — Сгенерируйте каркас проекта
Создайте новое приложение из шаблона:--display-name и --description, чтобы настроить создаваемые метаданные (вы также можете отредактировать их позже в src/constants/universal-identifiers.ts). Это создаёт проект TypeScript в my-twenty-app/ с начальным файлом application-config.ts, ролью по умолчанию, рабочими процессами CI/CD и интеграционным тестом.
После этой фазы: у вас есть исходный код приложения на вашем компьютере. Он ещё не запущен — это фаза 2.
Фаза 2 — Запустите локальный сервер Twenty
Вашему приложению нужен сервер Twenty для синхронизации. Сервер — это полноценный экземпляр Twenty — UI, GraphQL API, PostgreSQL — работающий локально в Docker. Ваш локальный код загружает свои определения на этот сервер, благодаря чему они появляются в интерфейсе. Генератор запускает её за вас: при запущенном Docker он скачивает образtwentycrm/twenty-app-dev, запускает его на порту 2020 и аутентифицирует CLI в предварительно заполненном демо‑workspace (tim@apple.dev) — вход не требуется.
Чтобы вместо этого подключиться к существующему серверу Twenty, передайте --url \<your-server-url>. Удалённые серверы аутентифицируются через OAuth: открывается браузер, чтобы вы могли войти в систему и нажать Authorize, после чего CLI получает доступ к вашему workspace. (Локально вы тоже можете включить OAuth с помощью --authentication-method oauth — войдите, используя tim@apple.dev / tim@apple.dev.)
В вашем терминале появится подтверждение, что всё настроено.
После этой фазы: у вас запущен сервер Twenty на http://localhost:2020, а ваш CLI авторизован для синхронизации с ним.
Если Docker не установлен или не запущен, генератор каркаса подскажет правильную команду запуска для вашей ОС. Когда Docker будет запущен, вы можете продолжить с
yarn twenty docker:start — заново генерировать каркас не нужно.Фаза 3 — Синхронизируйте свои изменения
Это внутренний цикл, в котором вы проведёте большую часть времени.src/, пересобирает при каждом изменении и синхронизирует результат с сервером. Отредактируйте файл, сохраните — и через несколько секунд сервер отразит изменения. В терминале появится панель текущего статуса.
Для более подробного вывода (журналы сборки, запросы синхронизации, трассировки ошибок) добавьте --verbose.
Откройте http://localhost:2020/settings/applications#developer. Вы должны увидеть своё приложение в разделе Your Apps.
Нажмите My twenty app, чтобы открыть его регистрацию приложения — запись на уровне сервера, описывающую ваше приложение (имя, идентификатор, учётные данные OAuth, источник). Одну и ту же регистрацию можно установить в нескольких рабочих пространствах на одном сервере.
Нажмите View installed app, чтобы посмотреть установку в рабочем пространстве. Вкладка About показывает версию и параметры управления.
После этой фазы: у вас есть интерактивный цикл разработки. Отредактируйте любой файл в src/, и он появится в интерфейсе.
Разовая синхронизация для CI и скриптов
Используйтеplan и apply, чтобы один раз запустить тот же конвейер без наблюдателя:
Все режимы требуют аутентифицированного удалённого сервера. Смотрите раздел Syncing & recovery для получения дополнительной информации о
plan.
yarn twenty dev --once и yarn twenty dev --once --dry-run являются устаревшими псевдонимами для yarn twenty apply и yarn twenty plan.Параметры режима разработки
Что вы можете создать
Приложения состоят из сущностей — каждая определена как файл TypeScript с однимexport default:
Полная справка: Концепции.
Следующие шаги
Конфигурация
Идентификация приложения, роль по умолчанию, хуки установки и удаления, публичные ресурсы.
Данные
Объекты, поля и двунаправленные связи.
Логика
Логические функции, навыки, агенты и OAuth-подключения.
Макет
Представления, навигация, макеты страниц, фронтенд-компоненты.
Операции
CLI, тестирование, удалённые серверы, CI и публикация вашего приложения.