---
title: Yayımlama
description: Twenty uygulamanızı pazaryerine sunun ya da dahili olarak dağıtın.
---

<Warning>
Uygulamalar şu anda alfa testinde. Özellik işlevsel ancak hâlâ gelişmekte.
</Warning>

## Genel Bakış

Uygulamanız [yerelde derlenip test edildikten sonra](/l/tr/developers/extend/apps/building), dağıtım için iki yolunuz vardır:

* **npm’ye yayımlama** — uygulamanızı Twenty pazaryerinde listeleyin; böylece herhangi bir çalışma alanı keşfedip yükleyebilir.
* **Bir tar arşivi dağıtın** — uygulamanızı dahili veya özel kullanım için doğrudan belirli bir Twenty sunucusuna yükleyin.

Her iki yol da aynı **build** adımından başlar.

## Uygulamanızı derleme

`build` komutu TypeScript kaynaklarınızı derler, mantık işlevlerini ve ön uç bileşenlerini transpile eder ve uygulamanızın içeriğini açıklayan bir `manifest.json` üretir:

```bash filename="Terminal"
yarn twenty build
```

Çıktı `.twenty/output/` dizinine yazılır. Bu dizin, dağıtım için gereken her şeyi içerir: derlenmiş kod, varlıklar, manifest ve `package.json` dosyanızın bir kopyası.

Ayrıca bir `.tgz` tarball oluşturmak için (deploy komutu tarafından dahili olarak kullanılır veya el ile dağıtım için):

```bash filename="Terminal"
yarn twenty build --tarball
```

## npm’ye yayımlama

npm’ye yayımlamak, uygulamanızın Twenty pazaryerinde keşfedilebilir olmasını sağlar. Herhangi bir Twenty çalışma alanı, pazaryeri uygulamalarına doğrudan arayüzden göz atabilir, yükleyebilir ve güncelleyebilir.

### Gereksinimler

* Bir [npm](https://www.npmjs.com) hesabı
* `twenty-app` anahtar kelimesi `package.json` dosyanızdaki `keywords` dizisinde **mutlaka** listelenmelidir

### Gerekli anahtar kelimeyi ekleme

Twenty pazar yeri, npm kayıt defterinde `twenty-app` anahtar kelimesine sahip paketleri arayarak uygulamaları keşfeder. Bunu `package.json` dosyanıza ekleyin:

```json filename="package.json"
{
  "name": "twenty-app-postcard-sender",
  "version": "1.0.0",
  "keywords": ["twenty-app"],
  ...
}
```

<Note>
Pazar yeri, npm kayıt defterinde `keywords:twenty-app` araması yapar. Bu anahtar kelime olmadan, adında `twenty-app-` öneki bulunsa bile paketiniz pazar yerinde görünmez.
</Note>

### Adımlar

1. **Uygulamanızı derleyin:**

```bash filename="Terminal"
yarn twenty build
```

2. **npm’ye yayımlayın:**

```bash filename="Terminal"
yarn twenty publish
```

Bu, `.twenty/output/` dizininden `npm publish` komutunu çalıştırır.

Belirli bir dist-tag altında yayımlamak için (ör. `beta` veya `next`):

```bash filename="Terminal"
yarn twenty publish --tag beta
```

### Pazar yerinde keşif nasıl çalışır

Twenty sunucusu pazar yeri kataloğunu npm kayıt defterinden **her saat** eşitler:

1. `keywords:twenty-app` anahtar kelimesine sahip tüm npm paketlerini arar
2. Her paket için `manifest.json` dosyasını npm CDN’inden getirir
3. Uygulamanın meta verileri (ad, açıklama, yazar, logo, ekran görüntüleri, kategori) manifest dosyasından çıkarılır ve pazar yerinde görüntülenir

Yayımladıktan sonra, uygulamanızın pazar yerinde görünmesi bir saate kadar sürebilir. Bir sonraki saatlik çalışmayı beklemek yerine eşitlemeyi hemen tetiklemek için:

```bash filename="Terminal"
yarn twenty catalog-sync
```

Belirli bir remote’u hedeflemek için:

```bash filename="Terminal"
yarn twenty catalog-sync -r production
```

Pazar yerinde gösterilen meta veriler, uygulamanızın kaynak kodundaki `defineApplication()` çağrısından gelir — `displayName`, `description`, `author`, `category`, `logoUrl`, `screenshots`, `aboutDescription`, `websiteUrl` ve `termsUrl` gibi alanlar.

### CI üzerinden yayımlama

İskelet proje, her sürümde yayımlayan bir GitHub Actions iş akışını içerir:

```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 build
      - run: npm publish --provenance --access public
        working-directory: .twenty/output
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
```

Diğer CI sistemleri (GitLab CI, CircleCI, vb.) için de aynı üç komut geçerlidir: `yarn install`, `yarn twenty build` ve ardından `.twenty/output` dizininden `npm publish`.

<Tip>
**npm provenance** isteğe bağlıdır ancak önerilir. `--provenance` ile yayımlamak, npm listenize bir güven rozeti ekler ve kullanıcıların paketin herkese açık bir CI ardışık düzenindeki belirli bir commit’ten oluşturulduğunu doğrulamasını sağlar. Kurulum talimatları için [npm provenance belgelerine](https://docs.npmjs.com/generating-provenance-statements) bakın.
</Tip>

## Sunucuya dağıtım (tarball)

Genel kullanıma açık olmasını istemediğiniz uygulamalar — sahipli araçlar, yalnızca kurumsal entegrasyonlar veya deneysel derlemeler — için bir tarball’ı doğrudan bir Twenty sunucusuna dağıtabilirsiniz.

### Ön Gereksinimler

Dağıtmadan önce, hedef sunucuyu işaret eden yapılandırılmış bir remote’a ihtiyacınız vardır. Remote’lar sunucu URL’sini ve kimlik doğrulama bilgilerini yerel olarak `~/.twenty/config.json` içinde saklar.

Bir remote ekleyin:

```bash filename="Terminal"
yarn twenty remote add --url https://your-twenty-server.com --as production
```

Yerel bir geliştirme sunucusu için:

```bash filename="Terminal"
yarn twenty remote add --local --as local
```

Etkileşimli olmayan ortamlar için bir API anahtarıyla da kimlik doğrulayabilirsiniz:

```bash filename="Terminal"
yarn twenty remote add --url https://your-twenty-server.com --token <api-key> --as production
```

Remote’larınızı yönetin:

```bash filename="Terminal"
yarn twenty remote list       # List all configured remotes
yarn twenty remote switch prod # Set the default remote
yarn twenty remote status     # Show active remote and auth status
yarn twenty remote remove old # Remove a remote
```

### Dağıtım

Uygulamanızı tek adımda derleyip sunucuya yükleyin:

```bash filename="Terminal"
yarn twenty deploy
```

Bu, uygulamayı `--tarball` ile derler ve ardından tarball’ı varsayılan remote’a GraphQL çok parçalı yükleme ile yükler.

Belirli bir remote’a dağıtmak için:

```bash filename="Terminal"
yarn twenty deploy -r production
```

### Dağıtılmış bir uygulamayı paylaşma

Tarball uygulamaları genel pazar yerinde listelenmez; bu nedenle aynı sunucudaki diğer çalışma alanları gezinerek onları keşfedemez. Dağıtılmış bir uygulamayı paylaşmak için:

1. **Ayarlar > Uygulamalar > Kayıtlar** bölümüne gidin ve uygulamanızı açın
2. **Dağıtım** sekmesinde, **Paylaşım bağlantısını kopyala**’ya tıklayın
3. Bu bağlantıyı diğer çalışma alanlarındaki kullanıcılarla paylaşın — onları doğrudan uygulamanın yükleme sayfasına götürür

Paylaşım bağlantısı, sunucunun temel URL’sini (herhangi bir çalışma alanı alt alan adı olmadan) kullanır; böylece sunucudaki herhangi bir çalışma alanı için çalışır.

### Sürüm yönetimi

Bir güncelleme yayımlamak için:

1. `package.json` içindeki `version` alanını artırın
2. `yarn twenty deploy` (veya `yarn twenty deploy -r production`) komutunu çalıştırın
3. Uygulamayı kurmuş olan çalışma alanları, ayarlarında mevcut güncellemeyi görecektir

## Uygulamaları yükleme

Bir uygulama yayımlandığında (npm) veya dağıtıldığında (tarball), çalışma alanları onu kullanıcı arayüzü (UI) aracılığıyla yükler:

```bash filename="Terminal"
yarn twenty install
```

Veya Twenty kullanıcı arayüzündeki **Ayarlar > Uygulamalar** sayfasından; burada hem pazar yerindeki hem de tarball ile dağıtılmış uygulamalar görüntülenip yüklenebilir.

## Uygulama dağıtım kategorileri

Twenty, uygulamaları nasıl dağıtıldıklarına göre üç kategoriye ayırır:

| Kategori              | Nasıl Çalışır                                                                                                                                                         | Pazaryerinde görünür mü? |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| **Geliştirme**        | `yarn twenty dev` ile çalışan yerel geliştirme modu uygulamaları. Derleme ve test için kullanılır.                                                                    | Hayır                    |
| **Yayımlanmış (npm)** | `twenty-app` anahtar kelimesiyle npm’ye yayımlanan uygulamalar. Herhangi bir çalışma alanının yükleyebilmesi için pazaryerinde listelenir.                            | Evet                     |
| **Dahili (tarball)**  | Bir tarball aracılığıyla belirli bir sunucuya dağıtılan uygulamalar. Yalnızca o sunucudaki çalışma alanları için bir paylaşım bağlantısı aracılığıyla kullanılabilir. | Hayır                    |

<Tip>
Uygulamanızı geliştirirken **Geliştirme** modunda başlayın. Hazır olduğunda, geniş dağıtım için **Yayımlanmış** (npm) ya da özel dağıtım için **Dahili** (tarball) seçeneğini tercih edin.
</Tip>

## CLI başvurusu

| Komut                       | Açıklama                                            | Temel bayraklar                                    |
| --------------------------- | --------------------------------------------------- | -------------------------------------------------- |
| `yarn twenty build`         | Uygulamayı derleyin ve manifest oluşturun           | `--tarball` — ayrıca bir `.tgz` paket oluşturur    |
| `yarn twenty publish`       | Derleyin ve npm’ye yayımlayın                       | `--tag <tag>` — npm dist-tag (örn. `beta`, `next`) |
| `yarn twenty deploy`        | Derleyin ve tarball’ı bir sunucuya yükleyin         | `-r, --remote <name>` — hedef remote               |
| `yarn twenty catalog-sync`  | Sunucuda pazar yeri katalog eşitlemesini tetikleyin | `-r, --remote <name>` — hedef remote               |
| `yarn twenty install`       | Dağıtılmış bir uygulamayı bir çalışma alanına kurun | `-r, --remote <name>` — hedef remote               |
| `yarn twenty dev`           | Yerel değişiklikleri izleyin ve eşitleyin           | Varsayılan remote’u kullanır                       |
| `yarn twenty remote add`    | Bir sunucu bağlantısı ekleyin                       | `--url`, `--token`, `--as`, `--local`, `--port`    |
| `yarn twenty remote list`   | Yapılandırılmış remote’ları listeleyin              | —                                                  |
| `yarn twenty remote switch` | Varsayılan remote’u ayarlayın                       | —                                                  |
| `yarn twenty remote status` | Bağlantı durumunu gösterin                          | —                                                  |
| `yarn twenty remote remove` | Bir remote’u kaldırın                               | —                                                  |
