Перейти к содержимому

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

Генерируйте JSON, YAML и PCF из файлов конфигурации Pkl для приложений, инструментов развёртывания и CI.

Читать офлайнelide help --lang ru 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 в терминале.

Была ли эта страница полезной?