# Pkl-Konfiguration rendern

Werten Sie eine `.pkl`- oder `.pcf`-Datei direkt aus und geben Sie das gerenderte Ergebnis auf
stdout aus. So erzeugen Sie Anwendungskonfiguration, versorgen Deployment-Tools oder prüfen eine Konfiguration vor dem
Commit. Ein Elide-Projekt ist nicht erforderlich.

## JSON oder YAML erzeugen

Beginnen Sie mit `config.pkl`:

```pkl
service = "api"
port = 8080
```

Wählen Sie das Format, das Ihre Anwendung liest, und leiten Sie das Ergebnis in eine Datei um:

```shell
elide --format=json config.pkl > config.json
elide --format=yaml config.pkl > config.yaml
```

Die JSON-Ausgabe enthält `service` und `port` mit denselben Werten und Typen. Der explizite Befehl `run` funktioniert
ebenfalls:

```shell
elide run --format json config.pkl
```

`.pkl`- und `.pcf`-Eingaben akzeptieren dieselben Optionen. Wandeln Sie zum Beispiel eine bestehende PCF-Konfiguration
in JSON um:

```shell
elide --format=json config.pcf > config.json
```

## Ein Ausgabeformat wählen

| Option | Ausgabe | Typische Verwendung |
| --- | --- | --- |
| `--format=json` | JSON | Anwendungseinstellungen und Tools, die JSON lesen |
| `--format=yaml` | YAML | Deployment-Konfiguration |
| `--format=pcf` | Pkl Configuration Format | Ausgewertete Konfiguration in Pkl-Notation prüfen |
| Ohne `--format` | Die konfigurierte Ausgabe des Moduls; standardmäßig PCF | Die eigene Ausgabedefinition eines Moduls beachten |

TOML-Ausgabe wird nicht unterstützt. Ein nicht unterstütztes Format schlägt mit Exit-Code `2` fehl.

## Konfiguration über Dateien hinweg teilen

Relative Importe werden von der Eingabedatei aus aufgelöst, sodass eine Konfiguration benachbarte Standardwerte auch dann
wiederverwenden kann, wenn sie aus einem anderen Verzeichnis aufgerufen wird. Legen Sie zum Beispiel `defaults.pkl` und
`config.pkl` gemeinsam unter `config/` ab:

```pkl
// defaults.pkl
port = 8080
```

```pkl
// config.pkl
import "defaults.pkl"

service = "api"
port = defaults.port
```

Rendern Sie die Konfiguration aus der Wurzel des Repositorys mit:

```shell
elide --format=json config/config.pkl
```

## Die Ausgabe in Skripten und CI verwenden

Stdout enthält nur das gerenderte Dokument; Diagnosen und Auswertungsfehler gehen nach stderr. Für Umleitungen oder
Pipelines ist kein `--quiet` nötig. Prüfen Sie zum Beispiel mit installiertem `jq` eine Eigenschaft:

```shell
elide --format=json config.pkl | jq '.port'
```

Das Projektmanifest wird genauso gerendert und zeigt so seine vollständig ausgewertete Konfiguration samt
Standardwerten:

```shell
elide --format=json elide.pkl | jq '.dependencies'
```

Ein Auswertungsfehler endet mit Exit-Code `1` und schreibt keinen gerenderten Inhalt nach stdout. Um eine Datei atomar
zu aktualisieren, verwenden Sie `--out` statt einer Shell-Umleitung:

```shell
elide --format=json --out config.json config.pkl
```

`--out config.json` schreibt eine temporäre Datei in das Zielverzeichnis und ersetzt `config.json` erst atomar, wenn
Auswertung und Schreiben erfolgreich waren. Bei Fehlern bleibt die bestehende Datei unverändert, und der Exit-Code ist
ungleich null. Das Zielverzeichnis muss existieren und atomares Ersetzen unterstützen. Relative Pfade werden vom
Arbeitsverzeichnis aus aufgelöst.

Mit `--out -` wählen Sie ausdrücklich stdout:

```shell
elide --format=json --out - config.pkl
```

Die Dokumentdarstellung lehnt `--sandbox` und `--limit` ab; diese Ausführungssteuerungen gelten für diesen Befehl
nicht. Alle Befehlsoptionen finden Sie in der [CLI-Referenz](/docs/cli-references). Wie Sie eine README oder ein Runbook im
selben Terminal lesen, steht unter [Markdown im Terminal](/docs/terminal-markdown).
