i18n - docs translations (#20778)
Created by Github action Co-authored-by: github-actions <github-actions@twenty.com>
This commit is contained in:
committed by
GitHub
parent
b869107a22
commit
3c458ce4ca
@@ -45,7 +45,7 @@ export default definePostInstallLogicFunction({
|
||||
Вы также можете вручную выполнить постустановочную функцию в любое время с помощью CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty exec --postInstall
|
||||
yarn twenty dev:function:exec --postInstall
|
||||
```
|
||||
|
||||
Основные моменты:
|
||||
@@ -60,7 +60,7 @@ yarn twenty exec --postInstall
|
||||
* Для каждого приложения допускается только одна послеустановочная функция. Сборка манифеста завершится ошибкой, если будет обнаружено более одной такой функции.
|
||||
* Параметры функции `universalIdentifier`, `shouldRunOnVersionUpgrade` и `shouldRunSynchronously` автоматически добавляются в манифест приложения в поле `postInstallLogicFunction` во время сборки — вам не нужно указывать их в [`defineApplication()`](/l/ru/developers/extend/apps/config/application).
|
||||
* Тайм-аут по умолчанию установлен на 300 секунд (5 минут), чтобы позволить выполнять более длительные задачи настройки, такие как инициализация данных.
|
||||
* **Не выполняется в режиме разработки**: когда приложение зарегистрировано локально (через `yarn twenty dev`), сервер полностью пропускает процесс установки и синхронизирует файлы напрямую через наблюдатель CLI — поэтому post-install никогда не запускается в режиме разработки, независимо от `shouldRunSynchronously`. Используйте `yarn twenty exec --postInstall`, чтобы запустить это вручную для запущенного рабочего пространства.
|
||||
* **Не выполняется в режиме разработки**: когда приложение зарегистрировано локально (через `yarn twenty dev`), сервер полностью пропускает процесс установки и синхронизирует файлы напрямую через наблюдатель CLI — поэтому post-install никогда не запускается в режиме разработки, независимо от `shouldRunSynchronously`. Используйте `yarn twenty dev:function:exec --postInstall`, чтобы запустить это вручную для запущенного рабочего пространства.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="definePreInstallLogicFunction" description="Выполняется до применения миграции метаданных рабочего пространства">
|
||||
@@ -87,7 +87,7 @@ export default definePreInstallLogicFunction({
|
||||
Вы также можете вручную выполнить предустановочную функцию в любое время с помощью CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty exec --preInstall
|
||||
yarn twenty dev:function:exec --preInstall
|
||||
```
|
||||
|
||||
Основные моменты:
|
||||
@@ -96,7 +96,7 @@ yarn twenty exec --preInstall
|
||||
* **Когда запускается хук**: выполняется непосредственно перед миграцией метаданных рабочего пространства (`synchronizeFromManifest`). Перед выполнением сервер запускает чисто добавочную «урезанную синхронизацию», которая регистрирует в метаданных рабочего пространства pre-install функцию **новой** версии — ничего больше не затрагивается — а затем выполняет её. Поскольку эта синхронизация только добавляет, объекты, поля и данные предыдущей версии остаются нетронутыми к моменту запуска вашего обработчика: вы можете безопасно читать и сохранять состояние до миграции.
|
||||
* **Модель выполнения**: pre-install выполняется **синхронно** и **блокирует установку**. Если обработчик генерирует исключение, установка прерывается до применения каких-либо изменений схемы — рабочее пространство остаётся на предыдущей версии в согласованном состоянии. Это сделано намеренно: pre-install — ваш последний шанс отказать в рискованном обновлении.
|
||||
* Как и в случае с post-install, для каждого приложения допускается только одна предустановочная функция. Она автоматически добавляется в манифест приложения в поле `preInstallLogicFunction` во время сборки.
|
||||
* **Не выполняется в режиме разработки**: как и post-install, процесс установки полностью пропускается для локально зарегистрированных приложений, поэтому pre-install никогда не запускается при `yarn twenty dev`. Используйте `yarn twenty exec --preInstall`, чтобы запустить это вручную.
|
||||
* **Не выполняется в режиме разработки**: как и post-install, процесс установки полностью пропускается для локально зарегистрированных приложений, поэтому pre-install никогда не запускается при `yarn twenty dev`. Используйте `yarn twenty dev:function:exec --preInstall`, чтобы запустить это вручную.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Pre-install и post-install: когда что использовать" description="Выбор подходящего хука установки">
|
||||
|
||||
@@ -13,7 +13,7 @@ icon: folder-open
|
||||
* **Доступными в логических функциях** — используйте URL ресурсов в письмах, ответах API или любой серверной логике.
|
||||
* **Используются для метаданных маркетплейса** — поля `logoUrl` и `screenshots` в `defineApplication()` ссылаются на файлы из этой папки (например, `public/logo.png`). Они отображаются в маркетплейсе при публикации вашего приложения.
|
||||
* **Автосинхронизация в режиме разработки** — когда вы добавляете, обновляете или удаляете файл в `public/`, он автоматически синхронизируется с сервером. Перезапуск не требуется.
|
||||
* **Включены в сборки** — `yarn twenty build` упаковывает все публичные ресурсы в выходной дистрибутив.
|
||||
* **Включены в сборки** — `yarn twenty dev:build` упаковывает все публичные ресурсы в выходной дистрибутив.
|
||||
|
||||
## Доступ к публичным ресурсам с помощью `getPublicAssetUrl`
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ export default defineObject({
|
||||
* Каждому полю требуются `name`, `type`, `label` и собственный стабильный `universalIdentifier`.
|
||||
* Массив `fields` необязателен — вы можете определять объекты без пользовательских полей.
|
||||
* Встроенным полям, определённым здесь, **не** нужен `objectUniversalIdentifier` — он наследуется от родительского объекта. Используйте [`defineField()`](/l/ru/developers/extend/apps/data/extending-objects), чтобы добавить поля к объектам, которые вам не принадлежат.
|
||||
* Вы можете сгенерировать новые объекты с помощью `yarn twenty add object`, который проведёт вас через выбор именования, полей и связей. См. [Architecture → Scaffolding entities](/l/ru/developers/extend/apps/getting-started/scaffolding).
|
||||
* Вы можете сгенерировать заготовки новых объектов с помощью `yarn twenty dev:add object`, который проведёт вас через настройку названий, полей и связей. См. [Architecture → Scaffolding entities](/l/ru/developers/extend/apps/getting-started/scaffolding).
|
||||
|
||||
<Note>
|
||||
**Базовые поля добавляются автоматически.** Когда вы определяете пользовательский объект, Twenty создаёт для вас стандартные поля, такие как `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` и `deletedAt`. Вам не нужно объявлять их в массиве `fields` — только ваши пользовательские поля. Вы можете переопределить базовое поле, объявив поле с тем же именем, но это редко бывает хорошей идеей.
|
||||
|
||||
@@ -65,7 +65,7 @@ your-app/
|
||||
│ npx create-twenty-app → yarn twenty dev (live sync) │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ Build & Deploy │
|
||||
│ yarn twenty build → yarn twenty deploy │
|
||||
│ yarn twenty dev:build → yarn twenty app:publish │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ Install flow │
|
||||
│ upload → [pre-install] → metadata migration → │
|
||||
@@ -77,7 +77,7 @@ your-app/
|
||||
```
|
||||
|
||||
* **`yarn twenty dev`** — следит за исходными файлами и синхронизирует изменения в реальном времени с подключённым сервером Twenty. Типизированный клиент API автоматически пересоздаётся при изменении схемы.
|
||||
* **`yarn twenty build`** — компилирует TypeScript, упаковывает логические функции и фронтенд-компоненты с помощью esbuild и формирует манифест.
|
||||
* **`yarn twenty dev:build`** — компилирует TypeScript, упаковывает логические функции и фронтенд-компоненты с помощью esbuild и формирует манифест.
|
||||
* **Хуки до/после установки** — необязательные функции, которые выполняются во время установки. См. раздел [Install Hooks](/l/ru/developers/extend/apps/config/install-hooks) для подробностей.
|
||||
|
||||
## Следующие шаги
|
||||
|
||||
@@ -6,44 +6,44 @@ icon: server
|
||||
|
||||
## Управление локальным сервером
|
||||
|
||||
Используйте `yarn twenty server` для управления локальным контейнером Twenty:
|
||||
Используйте `yarn twenty docker:*` для управления локальным контейнером Twenty:
|
||||
|
||||
| Команда | Что делает |
|
||||
| -------------------------------------- | ---------------------------------------------------- |
|
||||
| `yarn twenty server start` | Запустить сервер (при необходимости скачивает образ) |
|
||||
| `yarn twenty server start --port 3030` | Запустить на пользовательском порту |
|
||||
| `yarn twenty server stop` | Остановить сервер (данные сохраняются) |
|
||||
| `yarn twenty server status` | Показать URL, версию и учётные данные для входа |
|
||||
| `yarn twenty server logs` | Потоковый вывод журналов сервера |
|
||||
| `yarn twenty server reset` | Стереть данные и начать заново |
|
||||
| `yarn twenty server upgrade` | Скачать последний образ `twenty-app-dev` |
|
||||
| `yarn twenty server upgrade 2.2.0` | Обновить до конкретной версии |
|
||||
| `yarn twenty docker:start` | Запустить сервер (при необходимости скачивает образ) |
|
||||
| `yarn twenty docker:start --port 3030` | Запустить на пользовательском порту |
|
||||
| `yarn twenty docker:stop` | Остановить сервер (данные сохраняются) |
|
||||
| `yarn twenty docker:status` | Показать URL, версию и учётные данные для входа |
|
||||
| `yarn twenty docker:logs` | Потоковый вывод журналов сервера |
|
||||
| `yarn twenty docker:reset` | Стереть данные и начать заново |
|
||||
| `yarn twenty docker:upgrade` | Скачать последний образ `twenty-app-dev` |
|
||||
| `yarn twenty docker:upgrade 2.2.0` | Обновить до конкретной версии |
|
||||
|
||||
Данные сохраняются между перезапусками в двух томах Docker (`twenty-app-dev-data` для PostgreSQL, `twenty-app-dev-storage` для файлов). Используйте `reset`, чтобы стереть всё.
|
||||
|
||||
## Обновление образа сервера
|
||||
|
||||
`yarn twenty server upgrade` скачивает последний образ, сравнивает дайджесты и пересоздаёт контейнер только если действительно что-то изменилось. Тома сохраняются — заменяется только контейнер. Если был скачан новый образ и контейнер работал, при обновлении автоматически запускается новый контейнер; затем выполните `yarn twenty server start`, чтобы дождаться его готовности.
|
||||
`yarn twenty docker:upgrade` скачивает последний образ, сравнивает дайджесты и пересоздаёт контейнер только если действительно что-то изменилось. Тома сохраняются — заменяется только контейнер. Если был скачан новый образ и контейнер работал, при обновлении автоматически запускается новый контейнер; затем выполните `yarn twenty docker:start`, чтобы дождаться его готовности.
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty server upgrade # Latest
|
||||
yarn twenty server upgrade 2.2.0 # Specific version
|
||||
yarn twenty docker:upgrade # Latest
|
||||
yarn twenty docker:upgrade 2.2.0 # Specific version
|
||||
```
|
||||
|
||||
Проверьте запущенную версию с помощью `yarn twenty server status` (эта команда показывает `APP_VERSION`, встроенную в контейнер).
|
||||
Проверьте запущенную версию с помощью `yarn twenty docker:status` (эта команда показывает `APP_VERSION`, встроенную в контейнер).
|
||||
|
||||
## Запуск параллельного тестового экземпляра
|
||||
|
||||
Передайте `--test` любой команде `server`, чтобы управлять вторым, полностью изолированным экземпляром — это полезно для запуска интеграционных тестов или экспериментов, не затрагивая ваши основные данные разработки.
|
||||
Передайте `--test` любой команде `docker:*`, чтобы управлять вторым, полностью изолированным экземпляром — это полезно для запуска интеграционных тестов или экспериментов, не затрагивая ваши основные данные разработки:
|
||||
|
||||
| Команда | Что делает |
|
||||
| ----------------------------------- | ------------------------------------------------------- |
|
||||
| `yarn twenty server start --test` | Запустить тестовый экземпляр (по умолчанию — порт 2021) |
|
||||
| `yarn twenty server stop --test` | Остановить его |
|
||||
| `yarn twenty server status --test` | Показать его статус |
|
||||
| `yarn twenty server logs --test` | Транслировать его журналы |
|
||||
| `yarn twenty server reset --test` | Стереть его данные |
|
||||
| `yarn twenty server upgrade --test` | Обновить его образ |
|
||||
| `yarn twenty docker:start --test` | Запустить тестовый экземпляр (по умолчанию — порт 2021) |
|
||||
| `yarn twenty docker:stop --test` | Остановить его |
|
||||
| `yarn twenty docker:status --test` | Показать его статус |
|
||||
| `yarn twenty docker:logs --test` | Транслировать его журналы |
|
||||
| `yarn twenty docker:reset --test` | Стереть его данные |
|
||||
| `yarn twenty docker:upgrade --test` | Обновить его образ |
|
||||
|
||||
Тестовый экземпляр запускается в собственном контейнере Docker (`twenty-app-dev-test`) с выделенными томами (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) и собственной конфигурацией, поэтому он может работать параллельно с вашим основным экземпляром без конфликтов. Совместите `--test` с `--port`, чтобы переопределить значение по умолчанию (2021).
|
||||
|
||||
@@ -65,7 +65,7 @@ yarn add twenty-sdk twenty-client-sdk
|
||||
}
|
||||
```
|
||||
|
||||
Теперь вы можете запускать `yarn twenty dev`, `yarn twenty server start` и остальные команды.
|
||||
Теперь вы можете запускать `yarn twenty dev`, `yarn twenty docker:start` и остальные команды.
|
||||
|
||||
<Note>
|
||||
Не устанавливайте `twenty-sdk` глобально — фиксируйте версию в каждом проекте, чтобы каждое приложение использовало свою собственную версию.
|
||||
|
||||
@@ -43,7 +43,7 @@ npx create-twenty-app@latest my-twenty-app
|
||||
> **Хотите настроить локальный экземпляр Twenty?**
|
||||
|
||||
* **Да (рекомендуется)** — скачивает Docker-образ `twentycrm/twenty-app-dev` и запускает его на порту `2020`. Сначала убедитесь, что Docker запущен.
|
||||
* **Нет** — выберите это, если у вас уже есть сервер Twenty, к которому вы хотите подключиться. Позже вы можете подключить его с помощью `yarn twenty remote add`.
|
||||
* **Нет** — выберите это, если у вас уже есть сервер Twenty, к которому вы хотите подключиться. Позже вы можете подключить его с помощью `yarn twenty remote:add`.
|
||||
|
||||
<div style={{textAlign: 'center'}}>
|
||||
<img src="/images/docs/developers/extends/apps/start-instance.png" alt="Запустить локальный экземпляр?" />
|
||||
@@ -73,7 +73,7 @@ npx create-twenty-app@latest my-twenty-app
|
||||
**После этой фазы:** у вас запущен сервер Twenty на [http://localhost:2020](http://localhost:2020), а ваш CLI авторизован для синхронизации с ним.
|
||||
|
||||
<Note>
|
||||
Если Docker не установлен или не запущен, генератор каркаса подскажет правильную команду запуска для вашей ОС. Когда Docker будет запущен, вы можете продолжить с `yarn twenty server start` — заново генерировать каркас не нужно.
|
||||
Если Docker не установлен или не запущен, генератор каркаса подскажет правильную команду запуска для вашей ОС. Когда Docker будет запущен, вы можете продолжить с `yarn twenty docker:start` — заново генерировать каркас не нужно.
|
||||
</Note>
|
||||
|
||||
---
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
title: Создание каркаса
|
||||
description: Интерактивно генерируйте файлы сущностей с помощью yarn twenty add — объекты, поля, представления, логические функции и многое другое.
|
||||
description: Интерактивно генерируйте файлы сущностей с помощью yarn twenty dev:add — объекты, поля, представления, логические функции и многое другое.
|
||||
icon: wand-magic-sparkles
|
||||
---
|
||||
|
||||
Вместо ручного создания файлов сущностей используйте интерактивный генератор:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty add
|
||||
yarn twenty dev:add
|
||||
```
|
||||
|
||||
Он предлагает выбрать тип сущности и пошагово проводит через обязательные поля, а затем записывает готовый к использованию файл со стабильным `universalIdentifier` и корректным вызовом `defineEntity()`.
|
||||
@@ -15,29 +15,29 @@ yarn twenty add
|
||||
Вы также можете передать тип сущности напрямую, чтобы пропустить первый запрос:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty add object
|
||||
yarn twenty add logicFunction
|
||||
yarn twenty add frontComponent
|
||||
yarn twenty dev:add object
|
||||
yarn twenty dev:add logicFunction
|
||||
yarn twenty dev:add frontComponent
|
||||
```
|
||||
|
||||
## Доступные типы сущностей
|
||||
|
||||
| Тип сущности | Команда | Сгенерированный файл |
|
||||
| -------------------- | ------------------------------------ | ------------------------------------------------------- |
|
||||
| Объект | `yarn twenty add object` | `src/objects/\<name>.ts` |
|
||||
| Поле | `yarn twenty add field` | `src/fields/\<name>.ts` |
|
||||
| Логическая функция | `yarn twenty add logicFunction` | `src/logic-functions/\<name>.ts` |
|
||||
| Компонент фронтенда | `yarn twenty add frontComponent` | `src/front-components/\<name>.tsx` |
|
||||
| Роль | `yarn twenty add role` | `src/roles/\<name>.ts` |
|
||||
| Навык | `yarn twenty add skill` | `src/skills/\<name>.ts` |
|
||||
| Агент | `yarn twenty add agent` | `src/agents/\<name>.ts` |
|
||||
| Представление | `yarn twenty add view` | `src/views/\<name>.ts` |
|
||||
| Пункт меню навигации | `yarn twenty add navigationMenuItem` | `src/navigation-menu-items/\<name>.ts` |
|
||||
| Макет страницы | `yarn twenty add pageLayout` | `src/page-layouts/\<name>.ts` |
|
||||
| Тип сущности | Команда | Сгенерированный файл |
|
||||
| -------------------- | ---------------------------------------- | ------------------------------------------------------- |
|
||||
| Объект | `yarn twenty dev:add object` | `src/objects/\<name>.ts` |
|
||||
| Поле | `yarn twenty dev:add field` | `src/fields/\<name>.ts` |
|
||||
| Логическая функция | `yarn twenty dev:add logicFunction` | `src/logic-functions/\<name>.ts` |
|
||||
| Компонент фронтенда | `yarn twenty dev:add frontComponent` | `src/front-components/\<name>.tsx` |
|
||||
| Роль | `yarn twenty dev:add role` | `src/roles/\<name>.ts` |
|
||||
| Навык | `yarn twenty dev:add skill` | `src/skills/\<name>.ts` |
|
||||
| Агент | `yarn twenty dev:add agent` | `src/agents/\<name>.ts` |
|
||||
| Представление | `yarn twenty dev:add view` | `src/views/\<name>.ts` |
|
||||
| Пункт меню навигации | `yarn twenty dev:add navigationMenuItem` | `src/navigation-menu-items/\<name>.ts` |
|
||||
| Макет страницы | `yarn twenty dev:add pageLayout` | `src/page-layouts/\<name>.ts` |
|
||||
|
||||
## Что генерирует скэффолдер
|
||||
|
||||
У каждого типа сущности есть свой шаблон. Например, `yarn twenty add object` запрашивает:
|
||||
У каждого типа сущности есть свой шаблон. Например, `yarn twenty dev:add object` запрашивает:
|
||||
|
||||
1. **Имя (единственное число)** — например, `invoice`
|
||||
2. **Имя (множественное число)** — например, `invoices`
|
||||
@@ -54,5 +54,5 @@ yarn twenty add frontComponent
|
||||
Используйте флаг `--path`, чтобы поместить сгенерированный файл в пользовательское расположение:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty add logicFunction --path src/custom-folder
|
||||
yarn twenty dev:add logicFunction --path src/custom-folder
|
||||
```
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ description: Распространенные проблемы при перво
|
||||
icon: wrench
|
||||
---
|
||||
|
||||
* **Ошибки Docker** — убедитесь, что Docker Desktop (или демон) запущен перед выполнением `yarn twenty server start`. Сообщение об ошибке укажет правильную команду запуска для вашей ОС.
|
||||
* **Ошибки Docker** — убедитесь, что Docker Desktop (или демон) запущен перед выполнением `yarn twenty docker:start`. Сообщение об ошибке укажет правильную команду запуска для вашей ОС.
|
||||
* **Неподходящая версия Node** — нужна 24+. Проверьте с помощью `node -v`.
|
||||
* **Отсутствует Yarn 4** — выполните `corepack enable`.
|
||||
* **Зависимости повреждены** — `rm -rf node_modules && yarn install`.
|
||||
|
||||
@@ -61,17 +61,17 @@ export default defineLogicFunction({
|
||||
Вы также можете вручную выполнить функцию с помощью CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty exec -n create-new-post-card -p '{"key": "value"}'
|
||||
yarn twenty dev:function:exec -n create-new-post-card -p '{"key": "value"}'
|
||||
```
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty exec -y e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf
|
||||
yarn twenty dev:function:exec -u e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf
|
||||
```
|
||||
|
||||
Вы можете просматривать логи с помощью:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty logs
|
||||
yarn twenty dev:function:logs
|
||||
```
|
||||
</Note>
|
||||
|
||||
@@ -340,7 +340,7 @@ export default defineLogicFunction({
|
||||
<AccordionGroup>
|
||||
<Accordion title="CoreApiClient" description="Запрос и изменение данных рабочего пространства (записи, объекты)">
|
||||
|
||||
`CoreApiClient` — основной клиент для запросов и изменений данных рабочего пространства. Он **генерируется из схемы вашего рабочего пространства** во время `yarn twenty dev` или `yarn twenty build`, поэтому полностью типизирован в соответствии с вашими объектами и полями.
|
||||
`CoreApiClient` — основной клиент для запросов и изменений данных рабочего пространства. Он **генерируется из схемы вашего рабочего пространства** во время `yarn twenty dev` или `yarn twenty dev:build`, поэтому полностью типизирован в соответствии с вашими объектами и полями.
|
||||
|
||||
```ts
|
||||
import { CoreApiClient } from 'twenty-client-sdk/core';
|
||||
@@ -380,7 +380,7 @@ const { createCompany } = await client.mutation({
|
||||
Клиент использует синтаксис selection-set: передайте `true`, чтобы включить поле, используйте `__args` для аргументов и вкладывайте объекты для отношений. Вы получаете полное автодополнение и проверку типов на основе схемы вашего рабочего пространства.
|
||||
|
||||
<Note>
|
||||
**CoreApiClient генерируется на этапе dev/build.** Если вы используете его, не запустив сначала `yarn twenty dev` или `yarn twenty build`, он выбросит ошибку. Генерация происходит автоматически — CLI анализирует GraphQL-схему вашего рабочего пространства и создает типизированный клиент с помощью `@genql/cli`.
|
||||
**CoreApiClient генерируется на этапе dev/build.** Если вы используете его, не запустив сначала `yarn twenty dev` или `yarn twenty dev:build`, он выбросит ошибку. Генерация происходит автоматически — CLI анализирует GraphQL-схему вашего рабочего пространства и создает типизированный клиент с помощью `@genql/cli`.
|
||||
</Note>
|
||||
|
||||
#### Использование CoreSchema для аннотаций типов
|
||||
|
||||
@@ -4,54 +4,54 @@ description: Команды `yarn twenty` для выполнения функц
|
||||
icon: terminal
|
||||
---
|
||||
|
||||
Помимо `dev`, `build`, `add` и `typecheck`, CLI `yarn twenty` предоставляет команды для выполнения функций, просмотра логов и управления установками приложений.
|
||||
Помимо `dev`, `dev:build`, `dev:add` и `dev:typecheck`, CLI `yarn twenty` предоставляет команды для выполнения функций, просмотра логов и управления установками приложений.
|
||||
|
||||
## Выполнение функций (`yarn twenty exec`)
|
||||
## Выполнение функций (`yarn twenty dev:function:exec`)
|
||||
|
||||
Запустите логическую функцию вручную, не вызывая её через HTTP, cron или событие базы данных:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Execute by function name
|
||||
yarn twenty exec -n create-new-post-card
|
||||
yarn twenty dev:function:exec -n create-new-post-card
|
||||
|
||||
# Execute by universalIdentifier
|
||||
yarn twenty exec -u e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf
|
||||
yarn twenty dev:function:exec -u e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf
|
||||
|
||||
# Pass a JSON payload
|
||||
yarn twenty exec -n create-new-post-card -p '{"name": "Hello"}'
|
||||
yarn twenty dev:function:exec -n create-new-post-card -p '{"name": "Hello"}'
|
||||
|
||||
# Execute the post-install function
|
||||
yarn twenty exec --postInstall
|
||||
yarn twenty dev:function:exec --postInstall
|
||||
```
|
||||
|
||||
## Просмотр логов функций (`yarn twenty logs`)
|
||||
## Просмотр логов функций (`yarn twenty dev:function:logs`)
|
||||
|
||||
Потоковая передача журналов выполнения логических функций вашего приложения:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Stream all function logs
|
||||
yarn twenty logs
|
||||
yarn twenty dev:function:logs
|
||||
|
||||
# Filter by function name
|
||||
yarn twenty logs -n create-new-post-card
|
||||
yarn twenty dev:function:logs -n create-new-post-card
|
||||
|
||||
# Filter by universalIdentifier
|
||||
yarn twenty logs -u e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf
|
||||
yarn twenty dev:function:logs -u e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf
|
||||
```
|
||||
|
||||
<Note>
|
||||
Это отличается от `yarn twenty server logs`, который показывает логи контейнера Docker. `yarn twenty logs` показывает журналы выполнения функций вашего приложения с сервера Twenty.
|
||||
Это отличается от `yarn twenty docker:logs`, который показывает логи контейнера Docker. `yarn twenty dev:function:logs` показывает журналы выполнения функций вашего приложения с сервера Twenty.
|
||||
</Note>
|
||||
|
||||
## Удаление приложения (`yarn twenty uninstall`)
|
||||
## Удаление приложения (`yarn twenty app:uninstall`)
|
||||
|
||||
Удалите свое приложение из активного рабочего пространства:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty uninstall
|
||||
yarn twenty app:uninstall
|
||||
|
||||
# Skip the confirmation prompt
|
||||
yarn twenty uninstall --yes
|
||||
yarn twenty app:uninstall --yes
|
||||
```
|
||||
|
||||
## Управление удалёнными серверами
|
||||
@@ -60,19 +60,19 @@ yarn twenty uninstall --yes
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Add a new remote (opens a browser for OAuth login)
|
||||
yarn twenty remote add
|
||||
yarn twenty remote:add
|
||||
|
||||
# Connect to a local Twenty server (auto-detects port 2020 or 3000)
|
||||
yarn twenty remote add --local
|
||||
yarn twenty remote:add --local
|
||||
|
||||
# Add a remote non-interactively (useful for CI)
|
||||
yarn twenty remote add --api-url https://your-twenty-server.com --api-key $TWENTY_API_KEY --as my-remote
|
||||
yarn twenty remote:add --url https://your-twenty-server.com --api-key $TWENTY_API_KEY --as my-remote
|
||||
|
||||
# List all configured remotes
|
||||
yarn twenty remote list
|
||||
yarn twenty remote:list
|
||||
|
||||
# Switch the active remote
|
||||
yarn twenty remote switch <name>
|
||||
# Set the active remote
|
||||
yarn twenty remote:use <name>
|
||||
```
|
||||
|
||||
Ваши учётные данные хранятся в `~/.twenty/config.json`.
|
||||
|
||||
@@ -9,9 +9,9 @@ icon: rocket
|
||||
```text
|
||||
develop ─▶ test ─▶ build ─▶ deploy / publish
|
||||
─────── ──── ───── ─────────────────
|
||||
yarn yarn yarn yarn twenty deploy (tarball → one server)
|
||||
yarn yarn yarn yarn twenty app:publish --private (tarball → one server)
|
||||
twenty test twenty
|
||||
dev build yarn twenty publish (npm → marketplace)
|
||||
dev dev:build yarn twenty app:publish (npm → marketplace)
|
||||
```
|
||||
|
||||
## В этом разделе
|
||||
|
||||
@@ -18,10 +18,10 @@ description: Распространяйте своё приложение Twenty
|
||||
Выполните команду сборки, чтобы скомпилировать приложение и сгенерировать готовый к распространению `manifest.json`:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty build
|
||||
yarn twenty dev:build
|
||||
```
|
||||
|
||||
Это компилирует исходные файлы TypeScript, транспилирует функции логики и фронтенд-компоненты и записывает всё в `.twenty/output/`. Добавьте `--tarball`, чтобы также создать пакет `.tgz` для ручного распространения или для команды deploy.
|
||||
Это компилирует исходные файлы TypeScript, транспилирует функции логики и фронтенд-компоненты и записывает всё в `.twenty/output/`. Добавьте `--tarball`, чтобы также создать пакет `.tgz` для ручного распространения или для команды publish.
|
||||
|
||||
## Развертывание на сервер (tarball)
|
||||
|
||||
@@ -34,7 +34,7 @@ yarn twenty build
|
||||
Добавьте remote:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty remote add --api-url https://your-twenty-server.com --as production
|
||||
yarn twenty remote:add --url https://your-twenty-server.com --as production
|
||||
```
|
||||
|
||||
### Развертывание
|
||||
@@ -42,9 +42,9 @@ yarn twenty remote add --api-url https://your-twenty-server.com --as production
|
||||
Соберите и загрузите ваше приложение на сервер в одном шаге:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty deploy
|
||||
yarn twenty app:publish --private
|
||||
# To deploy to a specific remote:
|
||||
# yarn twenty deploy --remote production
|
||||
# yarn twenty app:publish --private --remote production
|
||||
```
|
||||
|
||||
### Общий доступ к развернутому приложению
|
||||
@@ -68,7 +68,7 @@ yarn twenty deploy
|
||||
Чтобы выпустить обновление:
|
||||
|
||||
1. Увеличьте значение поля `version` в вашем `package.json` (например: `1.2.3` → `1.2.4`, `1.3.0` или `2.0.0`).
|
||||
2. Выполните `yarn twenty deploy` (или `yarn twenty deploy --remote production`)
|
||||
2. Выполните `yarn twenty app:publish --private` (или `yarn twenty app:publish --private --remote production`)
|
||||
3. Рабочие пространства, в которых установлено приложение, увидят доступное обновление в своих настройках
|
||||
|
||||
<Note>
|
||||
@@ -121,7 +121,7 @@ yarn twenty deploy
|
||||
**Что делает:**
|
||||
|
||||
1. Извлекает исходный код вашего приложения.
|
||||
2. Запускает изолированный тестовый экземпляр Twenty с помощью составного действия `twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main` (эквивалент для CI `yarn twenty server start --test`).
|
||||
2. Запускает изолированный тестовый экземпляр Twenty с помощью составного действия `twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main` (эквивалент для CI `yarn twenty docker:start --test`).
|
||||
3. Включает Corepack, настраивает Node.js на основе вашего `.nvmrc` и устанавливает зависимости с помощью `yarn install --immutable`.
|
||||
4. Запускает `yarn test`, передавая `TWENTY_API_URL` и `TWENTY_API_KEY` из запущенного экземпляра, чтобы ваши тесты могли взаимодействовать с реальным сервером.
|
||||
|
||||
@@ -139,7 +139,7 @@ yarn twenty deploy
|
||||
**Что делает:**
|
||||
|
||||
1. Извлекает head-коммит PR (для PR с меткой) или запушенный коммит.
|
||||
2. Запускает `twentyhq/twenty/.github/actions/deploy-twenty-app@main` — эквивалент для CI `yarn twenty deploy`.
|
||||
2. Запускает `twentyhq/twenty/.github/actions/deploy-twenty-app@main` — эквивалент для CI `yarn twenty app:publish --private`.
|
||||
3. Запускает `twentyhq/twenty/.github/actions/install-twenty-app@main`, чтобы новая развернутая версия была установлена в целевое рабочее пространство.
|
||||
|
||||
**Обязательная конфигурация:**
|
||||
@@ -208,13 +208,13 @@ export default defineApplication({
|
||||
### Публикация
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty publish
|
||||
yarn twenty app:publish
|
||||
```
|
||||
|
||||
Чтобы опубликовать с определённым dist-tag (например, `beta` или `next`):
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty publish --tag beta
|
||||
yarn twenty app:publish --tag beta
|
||||
```
|
||||
|
||||
### Как работает обнаружение приложений в маркетплейсе
|
||||
@@ -224,9 +224,9 @@ yarn twenty publish --tag beta
|
||||
Вы можете запустить синхронизацию немедленно, вместо ожидания:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty server catalog-sync
|
||||
yarn twenty dev:catalog-sync
|
||||
# To target a specific remote:
|
||||
# yarn twenty server catalog-sync --remote production
|
||||
# yarn twenty dev:catalog-sync --remote production
|
||||
```
|
||||
|
||||
Метаданные, отображаемые в маркетплейсе, берутся из конфигурации `defineApplication()` — из таких полей, как `displayName`, `description`, `author`, `category`, `logoUrl`, `screenshots`, `aboutDescription`, `websiteUrl` и `termsUrl`.
|
||||
@@ -259,12 +259,12 @@ jobs:
|
||||
node-version: "24"
|
||||
registry-url: https://registry.npmjs.org
|
||||
- run: yarn install --immutable
|
||||
- run: npx twenty build
|
||||
- run: npx twenty dev:build
|
||||
- run: npm publish --provenance --access public
|
||||
working-directory: .twenty/output
|
||||
```
|
||||
|
||||
Для других CI-систем (GitLab CI, CircleCI и др.) применимы те же три команды: `yarn install`, `yarn twenty build`, затем `npm publish` из `.twenty/output`.
|
||||
Для других CI-систем (GitLab CI, CircleCI и др.) применимы те же три команды: `yarn install`, `yarn twenty dev:build`, затем `npm publish` из `.twenty/output`.
|
||||
|
||||
<Note>
|
||||
**npm provenance** — опционально, но рекомендуется. Публикация с флагом `--provenance` добавляет к вашему пакету в npm значок доверия, позволяя пользователям проверить, что пакет был собран из конкретного коммита в общедоступном конвейере CI. См. инструкции по настройке в [документации по npm provenance](https://docs.npmjs.com/generating-provenance-statements).
|
||||
@@ -281,7 +281,7 @@ jobs:
|
||||
Вы также можете устанавливать приложения из командной строки:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty install
|
||||
yarn twenty app:install
|
||||
```
|
||||
|
||||
<Note>
|
||||
@@ -290,5 +290,5 @@ yarn twenty install
|
||||
* Установка той же версии, которая уже установлена в вашем рабочем пространстве, отклоняется с ошибкой `APP_ALREADY_INSTALLED`.
|
||||
* Установка версии ниже текущей отклоняется с ошибкой `CANNOT_DOWNGRADE_APPLICATION`.
|
||||
|
||||
Чтобы установить более новую версию, сначала разверните или опубликуйте её, затем снова выполните `yarn twenty install`.
|
||||
Чтобы установить более новую версию, сначала разверните или опубликуйте её, затем снова выполните `yarn twenty app:install`.
|
||||
</Note>
|
||||
|
||||
@@ -235,7 +235,7 @@ yarn test:watch
|
||||
Вы также можете запустить проверку типов для своего приложения без запуска тестов:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty typecheck
|
||||
yarn twenty dev:typecheck
|
||||
```
|
||||
|
||||
Это запускает `tsc --noEmit` и сообщает о любых ошибках типов.
|
||||
|
||||
Reference in New Issue
Block a user