65 lines
6.8 KiB
Plaintext
65 lines
6.8 KiB
Plaintext
---
|
|
title: Конфигурация приложения
|
|
description: Определите идентификацию вашего приложения, роль по умолчанию, переменные и метаданные маркетплейса с помощью defineApplication.
|
|
icon: rocket
|
|
---
|
|
|
|
В каждом приложении должен быть ровно один вызов `defineApplication`. Он объявляет:
|
|
|
|
* **Идентификация** — универсальный идентификатор, отображаемое имя, описание.
|
|
* **Разрешения** — от имени какой роли выполняются его логические функции и фронтенд-компоненты.
|
|
* **Переменные** *(необязательно)* — пары ключ–значение, доступные вашему коду как переменные окружения.
|
|
* **Хуки предустановки / постустановки** *(необязательно)* — см. [Логические функции](/l/ru/developers/extend/apps/logic/logic-functions).
|
|
|
|
```ts src/application-config.ts
|
|
import { defineApplication } from 'twenty-sdk/define';
|
|
|
|
export default defineApplication({
|
|
universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d',
|
|
displayName: 'My Twenty App',
|
|
description: 'My first Twenty app',
|
|
applicationVariables: {
|
|
DEFAULT_RECIPIENT_NAME: {
|
|
universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de',
|
|
description: 'Default recipient name for postcards',
|
|
value: 'Jane Doe',
|
|
isSecret: false,
|
|
},
|
|
},
|
|
});
|
|
```
|
|
|
|
Заметки:
|
|
|
|
* Поля `universalIdentifier` — это детерминированные идентификаторы, которые принадлежат вам. Сгенерируйте их один раз и сохраняйте неизменными между синхронизациями.
|
|
* `applicationVariables` становятся переменными окружения для ваших функций и фронтенд-компонентов. В логических функциях (на стороне сервера) они доступны как `process.env.VARIABLE_NAME`. Во фронтенд-компонентах используйте `getApplicationVariable('VARIABLE_NAME')` из `twenty-sdk/front-component`. Переменные, помеченные как `isSecret: true`, внедряются только в логические функции. Фронтенд-компоненты получают только несекретные переменные.
|
|
* Роль по умолчанию автоматически определяется из файла роли, помеченного с помощью [`defineApplicationRole()`](/l/ru/developers/extend/apps/config/roles) — вам не нужно ссылаться на неё из `defineApplication()`.
|
|
* Предустановочные и постустановочные функции обнаруживаются автоматически во время сборки манифеста — вам не нужно указывать их в `defineApplication()`.
|
|
* Явная передача `defaultRoleUniversalIdentifier` по-прежнему поддерживается для обратной совместимости, но считается устаревшей и вместо неё рекомендуется использовать `defineApplicationRole()`.
|
|
|
|
## Роль функции по умолчанию
|
|
|
|
Роль, объявленная с помощью [`defineApplicationRole()`](/l/ru/developers/extend/apps/config/roles), определяет, к чему могут получать доступ логические функции и фронтенд‑компоненты приложения:
|
|
|
|
* Токен времени выполнения, подставляемый как `TWENTY_APP_ACCESS_TOKEN`, формируется из этой роли.
|
|
* Типизированный клиент API ограничен правами, предоставленными этой роли.
|
|
* Следуйте принципу наименьших привилегий: объявляйте только те разрешения, которые действительно нужны вашим функциям.
|
|
|
|
Когда вы создаёте новое приложение с помощью шаблона, CLI создаёт стартовый файл роли по адресу `src/roles/default-role.ts`. Полную справочную информацию см. в разделе [Роли и разрешения](/l/ru/developers/extend/apps/config/roles).
|
|
|
|
## Метаданные маркетплейса
|
|
|
|
Если вы планируете [опубликовать приложение](/l/ru/developers/extend/apps/operations/publishing), эти необязательные поля определяют, как оно отображается в маркетплейсе:
|
|
|
|
| Поле | Описание |
|
|
| ------------------ | ------------------------------------------------------------------------------------------------------------------- |
|
|
| `author` | Имя автора или название компании |
|
|
| `category` | Категория приложения для фильтрации в маркетплейсе |
|
|
| `logoUrl` | Путь к логотипу вашего приложения (например, `public/logo.png`) |
|
|
| `screenshots` | Массив путей к скриншотам (например, `public/screenshot-1.png`) |
|
|
| `aboutDescription` | Расширенное описание в Markdown для вкладки "About". Если опущено, маркетплейс использует `README.md` пакета из npm |
|
|
| `websiteUrl` | Ссылка на ваш сайт |
|
|
| `termsUrl` | Ссылка на условия предоставления услуг |
|
|
| `emailSupport` | Адрес электронной почты поддержки |
|
|
| `issueReportUrl` | Ссылка на систему отслеживания проблем |
|