# Renderizar configuración Pkl

Evalúe directamente un archivo `.pkl` o `.pcf` y envíe su salida renderizada a stdout. Úselo
para generar la configuración de una aplicación, alimentar herramientas de despliegue o revisar una configuración antes
de confirmarla. No se necesita ningún proyecto de Elide.

## Generar JSON o YAML

Empiece con `config.pkl`:

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

Elija el formato que consume su aplicación y redirija el resultado a un archivo:

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

La salida JSON contiene `service` y `port` con los mismos valores y tipos. El comando explícito `run` también funciona:

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

Las entradas `.pkl` y `.pcf` aceptan las mismas opciones. Por ejemplo, convierta una configuración PCF existente a
JSON:

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

## Elegir un formato de salida

| Opción | Salida | Uso habitual |
| --- | --- | --- |
| `--format=json` | JSON | Ajustes de aplicaciones y herramientas que consumen JSON |
| `--format=yaml` | YAML | Configuración de despliegue |
| `--format=pcf` | Pkl Configuration Format | Revisar la configuración evaluada en notación Pkl |
| Sin `--format` | La salida configurada del módulo; PCF por defecto | Respetar la definición de salida propia del módulo |

La salida TOML no está admitida. Un formato no admitido falla con el código de salida `2`.

## Compartir configuración entre archivos

Las importaciones relativas se resuelven desde el archivo de entrada, así que una configuración puede reutilizar valores
predeterminados cercanos aunque se invoque desde otro directorio. Por ejemplo, coloque `defaults.pkl` y `config.pkl`
juntos en `config/`:

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

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

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

Desde la raíz del repositorio, renderice la configuración con:

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

## Usar la salida en scripts y CI

Stdout contiene solo el documento renderizado; los diagnósticos y los errores de evaluación van a stderr. No hace falta
`--quiet` para redirecciones ni pipelines. Por ejemplo, con `jq` instalado, inspeccione una propiedad:

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

El manifiesto del proyecto se renderiza igual, lo que muestra su configuración totalmente evaluada, con los valores
predeterminados incluidos:

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

Un fallo de evaluación termina con el código `1` y no escribe contenido renderizado en stdout. Para actualizar un
archivo de forma atómica, use `--out` en lugar de una redirección de la shell:

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

`--out config.json` escribe un archivo temporal en el directorio de destino y reemplaza `config.json` de forma atómica
solo cuando la evaluación y la escritura tienen éxito. Los fallos dejan el archivo existente sin cambios y terminan con
un código distinto de cero. El directorio de destino debe existir y admitir el reemplazo atómico. Las rutas relativas
se resuelven desde su directorio de trabajo.

Use `--out -` para seleccionar stdout de forma explícita:

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

La representación de documentos rechaza `--sandbox` y `--limit`; esos controles de ejecución no se aplican a este
comando. Para ver todas las opciones del comando, consulte la [referencia de la CLI](/docs/cli-references). Para leer un
README o un runbook en la misma terminal, consulte [Markdown en la terminal](/docs/terminal-markdown).
