--- title: Публикация description: Распространяйте своё приложение Twenty в маркетплейсе или разверните его для внутреннего использования. --- Приложения сейчас проходят альфа-тестирование. Функциональность работает, но продолжает развиваться. ## Обзор После того как ваше приложение [собрано и протестировано локально](/l/ru/developers/extend/apps/building), у вас есть два пути для его распространения: * **Опубликовать в npm** — разместите ваше приложение в маркетплейсе Twenty, чтобы любое рабочее пространство могло его найти и установить. * **Отправить tarball** — разверните приложение на конкретном сервере Twenty для внутреннего использования, не делая его общедоступным. ## Публикация в npm Публикация в npm делает ваше приложение видимым в маркетплейсе Twenty. Любое рабочее пространство Twenty может просматривать, устанавливать и обновлять приложения из маркетплейса непосредственно из интерфейса. ### Требования * Учётная запись [npm](https://www.npmjs.com) * Название вашего пакета **должно** использовать префикс `twenty-app-` (например, `twenty-app-postcard-sender`) ### Шаги 1. **Соберите приложение** — CLI компилирует исходные файлы TypeScript и генерирует манифест приложения: ```bash filename="Terminal" yarn twenty app:build ``` 2. **Опубликуйте в npm** — отправьте собранный пакет в реестр npm: ```bash filename="Terminal" npx twenty app:publish ``` ### Автоматическое обнаружение Пакеты с префиксом `twenty-app-` автоматически обнаруживаются каталогом маркетплейса Twenty. После публикации ваше приложение появится в маркетплейсе в течение нескольких минут — ручная регистрация или одобрение не требуются. ### Публикация через CI Сгенерированный шаблоном проект включает workflow GitHub Actions, который выполняет публикацию при каждом релизе. Он запускает `app:build`, затем `npm publish --provenance` из результатов сборки: ```yaml filename=".github/workflows/publish.yml" name: Publish on: release: types: [published] permissions: contents: read id-token: write jobs: publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "24" registry-url: https://registry.npmjs.org - run: yarn install --immutable - run: npx twenty app:build - run: npm publish --provenance --access public working-directory: .twenty/output env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} ``` Для других CI-систем (GitLab CI, CircleCI и др.) применимы те же три команды: `yarn install`, `npx twenty app:build`, затем `npm publish` из `.twenty/output`. **npm provenance** — опционально, но рекомендуется. Публикация с флагом `--provenance` добавляет к вашему пакету в npm значок доверия, позволяя пользователям проверить, что пакет был собран из конкретного коммита в общедоступном конвейере CI. См. инструкции по настройке в [документации по npm provenance](https://docs.npmjs.com/generating-provenance-statements). ## Внутреннее распространение Для приложений, которые вы не хотите делать общедоступными — собственные инструменты, интеграции только для предприятия или экспериментальные сборки — вы можете отправить tarball напрямую на сервер Twenty. ### Отправка tarball Соберите приложение и разверните его на конкретном сервере одним шагом: ```bash filename="Terminal" npx twenty app:publish --server ``` Любое рабочее пространство на этом сервере сможет установить и обновить приложение на странице настроек **Applications**. ### Управление версиями Чтобы выпустить обновление: 1. Обновите значение поля `version` в файле `package.json` 2. Отправьте новый tarball командой `npx twenty app:publish --server ` 3. Рабочие пространства на этом сервере увидят доступное обновление в своих настройках Внутренние приложения ограничены сервером, на который они отправлены. Они не появятся в публичном маркетплейсе и не могут быть установлены рабочими пространствами на других серверах. ## Категории приложений Twenty группирует приложения в три категории в зависимости от способа их распространения: | Категория | Как это работает | Отображается в маркетплейсе? | | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | | **Разработка** | Локальные приложения в режиме разработки, запущенные через `yarn twenty app:dev`. Используются для сборки и тестирования. | Нет | | **Опубликовано** | Приложения, опубликованные в npm с префиксом `twenty-app-`. Отображаются в маркетплейсе, доступные для установки любому рабочему пространству. | Да | | **Внутренний** | Приложения, развернутые через tarball на конкретном сервере. Доступны только рабочим пространствам на этом сервере. | Нет | Начните в режиме **Разработка** во время создания приложения. Когда будет готово, выберите **Опубликовано** (npm) для широкого распространения или **Внутренний** (tarball) для приватного развертывания.