> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plato.ae/llms.txt
> Use this file to discover all available pages before exploring further.

# Derle ve Yayınla

> PC yazıcı sürücüsünü oluşturun, paketleyin, stres testi yapın ve yayınlayın.

# Derle ve Yayınla

Mevcut paket `@plato/pc-printer`'dir.

## Komut dosyaları

| Senaryo  | Emretmek                                                                                       | Amaç                                                                       |
| -------- | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| `clean`  | `node scripts/clean.js`                                                                        | Derleme yapıtlarını, çıktıyı, günlükleri, zip'i ve `dump.rdb`'yi kaldırır. |
| `build`  | `esbuild src/index.ts src/scripts/*.ts --bundle --platform=node --target=node12 --outdir=dist` | Çalışma zamanı kodunu paketler.                                            |
| `start`  | `node dist/index.js`                                                                           | Yerleşik sürücüyü başlatır.                                                |
| `pkg`    | `pkg dist/index.js -t node12-win-x64 -o output/plato-printer.exe --config package.json`        | Windows yürütülebilir dosyası oluşturur.                                   |
| `bundle` | sürüm yükseltme, oluşturma, Redis hazırlığı, paket, zip                                        | `plato-printer.zip` üretir.                                                |
| `stress` | `node scripts/stress-test.js`                                                                  | Sahte yazıcı yükleme testini çalıştırır.                                   |

## Yerel Olarak Oluşturun

```sh theme={null}
pnpm --filter @plato/pc-printer clean
pnpm --filter @plato/pc-printer build
pnpm --filter @plato/pc-printer start
```

## Sürüm Zip'i Oluştur

```sh theme={null}
pnpm --filter @plato/pc-printer bundle
```

Paket komut dosyası:

1. `src/version.ts`'yi artırır.
2. Sürücüyü `dist`'ye oluşturur.
3. Yapılandırılmış Windows Redis ikili dosyasını hazırlar.
4. `output/plato-printer.exe`'yi oluşturur.
5. `config.json`'yi kopyalar.
6. Caddy varlıklarını kopyalar.
7. Sertifikaları kopyalar.
8. `redis-binaries/<redis.version>`'yi kopyalar.
9. `plato-printer.zip`'yi oluşturur.

## Sürüm İçeriği

```txt theme={null}
plato-printer.exe
config.json
assets/
  caddy/
  certs/
redis-binaries/
```

## Sürüm oluşturma

`src/version.ts` şunları içerir:

```ts theme={null}
export const BUILD_VERSION = 66;
```

Derleme sürümü `GET /health` tarafından döndürülür ve başlangıç ​​başlığında yazdırılır. Bu dosyayı manuel olarak düzenlemeyin; `scripts/increment-version.js`, `pnpm bundle` sırasında günceller.

## Caddy Hazırlığı

Caddy `2.6.4`'ye sabitlendi.

Paketlemeden önce Caddy'yi `assets/caddy`'ye indirmek için:

```sh theme={null}
pnpm --filter @plato/pc-printer exec node scripts/download-caddy.js
```

`assets/caddy/caddy.exe` mevcutsa çalışma zamanı kurulumu, Caddy'yi müşteri makinesine indirmek yerine onu kopyalayabilir.

## Redis İkili Hazırlık

`scripts/prepare-redis-binaries.js`, `config.json`'yi okur ve eksikse yapılandırılmış Windows Redis sürümünü indirir.

Beklenen yol:

```txt theme={null}
redis-binaries/<version>/Redis-<version>-Windows-x64-msys2/redis-server.exe
```

## Stres Testi

Stres testi sahte TCP yazıcılarını başlatır ve birçok `/print` isteği gönderir.

```sh theme={null}
pnpm --filter @plato/pc-printer stress
```

Yararlı seçenekler:

```sh theme={null}
node scripts/stress-test.js \
  --host http://127.0.0.1:8080 \
  --printers 5 \
  --jobs 100 \
  --base-port 9200 \
  --poll-ms 500 \
  --timeout-ms 60000
```

Test, tüm hedef kuyruklar boşaldığında başarılı olur.

## Sürüm Kontrol Listesi

1. `config.json`'nin sürüm için doğru olduğunu onaylayın.
2. HTTPS'nin çevrimdışı çalışması gerekiyorsa Caddy varlıklarının mevcut olduğunu doğrulayın.
3. `pnpm --filter @plato/pc-printer clean`'yi çalıştırın.
4. `pnpm --filter @plato/pc-printer bundle`'yi çalıştırın.
5. Yürütülebilir dosyayı `output/`'den çalıştırın.
6. `GET /health`'yi kontrol edin.
7. Gerçek bir deneme baskısı çalıştırın.
8. `plato-printer.zip`'nin beklenen dosyaları içerdiğini doğrulayın.
