Перейти до вмісту

Рендеринг конфігурації Pkl

Генеруйте JSON, YAML і PCF з файлів конфігурації Pkl для застосунків, інструментів розгортання та CI.

Читати офлайнelide help --lang uk pkl-configuration

На цій сторінці

Обчисліть файл .pkl або .pcf напряму й надішліть результат рендерингу в stdout. Так можна генерувати конфігурацію застосунку, передавати її інструментам розгортання або перевіряти конфігурацію перед комітом. Проєкт Elide не потрібен.

Генерування JSON або YAML

Почніть із config.pkl:

pkl
service = "api"
port = 8080
utf-8 · pkl · Рядків: 2

Виберіть формат, який читає ваш застосунок, і перенаправте результат у файл:

Термінал
shell
elide --format=json config.pkl > config.json
elide --format=yaml config.pkl > config.yaml

Вивід JSON містить service і port з тими самими значеннями й типами. Явна команда run теж працює:

Термінал
shell
elide run --format json config.pkl

Вхідні файли .pkl і .pcf приймають однакові параметри. Наприклад, перетворіть наявну конфігурацію PCF на JSON:

Термінал
shell
elide --format=json config.pcf > config.json

Вибір формату виводу

ПараметрВивідТипове застосування
--format=jsonJSONНалаштування застосунків та інструменти, що читають JSON
--format=yamlYAMLКонфігурація розгортання
--format=pcfPkl Configuration FormatПерегляд обчисленої конфігурації в нотації Pkl
Без --formatНалаштований вивід модуля; за замовчуванням PCFДотримання власного визначення виводу модуля

Вивід TOML не підтримується. Непідтримуваний формат завершується з кодом виходу 2.

Спільна конфігурація для кількох файлів

Відносні імпорти розв’язуються від вхідного файлу, тож конфігурація може повторно використовувати сусідні типові значення, навіть якщо її викликають з іншого каталогу. Наприклад, покладіть defaults.pkl і config.pkl разом у config/:

pkl
// defaults.pkl
port = 8080
utf-8 · pkl · Рядків: 2
pkl
// config.pkl
import "defaults.pkl"

service = "api"
port = defaults.port
utf-8 · pkl · Рядків: 5

З кореня репозиторію відрендеріть конфігурацію командою:

Термінал
shell
elide --format=json config/config.pkl

Використання виводу в скриптах і CI

Stdout містить лише відрендерений документ; діагностика й помилки обчислення йдуть у stderr. Для перенаправлення чи конвеєрів прапорець --quiet не потрібен. Наприклад, зі встановленим jq перегляньте значення властивості:

Термінал
shell
elide --format=json config.pkl | jq '.port'

Маніфест проєкту рендериться так само — так видно його повністю обчислену конфігурацію разом із типовими значеннями:

Термінал
shell
elide --format=json elide.pkl | jq '.dependencies'

Помилка обчислення завершується з кодом 1 і не записує відрендерений вміст у stdout. Щоб оновити файл атомарно, використовуйте --out замість перенаправлення оболонки:

Термінал
shell
elide --format=json --out config.json config.pkl

--out config.json записує тимчасовий файл у цільовий каталог і атомарно замінює config.json лише після успішного обчислення й запису. У разі помилки наявний файл не змінюється, а код виходу ненульовий. Цільовий каталог має існувати й підтримувати атомарну заміну. Відносні шляхи розв’язуються від робочого каталогу.

Використайте --out -, щоб явно вибрати stdout:

Термінал
shell
elide --format=json --out - config.pkl

Рендеринг документів відхиляє --sandbox і --limit; ці засоби керування виконанням до цієї команди не застосовуються. Усі параметри команди див. у довіднику CLI. Як читати README або ранбук у тому самому терміналі, див. Markdown у терміналі.

Чи була ця сторінка корисною?