Конвертер YAML в TOML Online
Конвертируйте YAML-конфигурацию в TOML. Бесплатно, в вашем браузере.
title = "My Project" version = "1.0.0" [server] host = "localhost" port = 8080 [database] host = "db.example.com" name = "myapp"
Сценарии использования
Из Docker и GitHub Actions в Rust и Hugo
Миграция Jekyll→Hugo
Конвертируйте YAML-front matter Jekyll в TOML для миграции контента в Hugo.
Современный Python
Извлекайте конфигурацию из YAML для адаптации в pyproject.toml по стандарту PEP 621.
100% конфиденциально
Ваш YAML никогда не покидает браузер. Без серверов, без регистрации.
В реальном времени
Конвертация по мере ввода с мгновенным обнаружением синтаксических ошибок YAML.
Как это работает
Три шага — никаких сложностей
Вставьте YAML
Вставьте YAML в редактор. Поддерживаются docker-compose.yml, воркфлоу GitHub Actions, плейбуки Ansible и любой валидный YAML 1.2.
Конвертация в TOML
Конвертер преобразует YAML-словари и списки в секции и массивы TOML. Всё выполняется в браузере — ничего не загружается.
Скопируйте или скачайте TOML
Получите TOML, готовый для Cargo.toml, pyproject.toml, Pipfile, hugo.toml или любого инструмента, принимающего TOML v1.0.
FAQ
Остались вопросы?
Наиболее распространённые сценарии: миграция Python-проектов с requirements.txt + setup.cfg (устаревший формат) на pyproject.toml (современный стандарт, определённый PEP 517/518/621), при которой часть конфигурации может существовать в YAML (например, воркфлоу CI/CD) и нужно нормализовать секции конфигурации до TOML. Также актуально при миграции Jekyll-сайтов (YAML front matter) на Hugo (предпочтительный TOML front matter). Наконец, команды, переходящие на Rust, нередко имеют CI/CD-конфигурации в YAML (GitHub Actions), которые нужно отразить в Cargo.toml для управления фичами или членами воркспейса.
docker-compose.yml определяет сервисы, сети и тома в YAML. Хотя нативного TOML-эквивалента для Docker Compose не существует (Docker принимает только YAML для формата Compose), конвертация docker-compose.yml в TOML может быть полезна как промежуточное представление: некоторые Rust-проекты используют TOML как собственную конфигурацию инфраструктуры (например, конфигурации серверов на tokio, actix-web или tauri), и наличие той же структуры сервисов в TOML облегчает интеграцию. Конвертация генерирует валидный TOML с секциями [[services]] для массивов объектов.
Воркфлоу GitHub Actions (.github/workflows/*.yml) имеют специфическую структуру (on, jobs, steps), которая не соответствует напрямую структуре pyproject.toml ([project], [tool.X], [build-system]). Однако часто хочется извлечь части воркфлоу — матрицу версий Python, тестовые зависимости или конфигурацию инструментов — для включения в pyproject.toml. Данный инструмент конвертирует весь YAML в структурный TOML; из полученного TOML можно выбрать и адаптировать нужные секции для добавления в pyproject.toml.
Обратный процесс по сравнению с Hugo→Jekyll: YAML-front matter Jekyll ограничивается символами --- в начале и конце Markdown-файла. Для миграции в Hugo с TOML front matter извлеките YAML-блок между ---, конвертируйте его в TOML с помощью данного инструмента и замените разделители --- на +++. Общие поля (title, date, tags, categories, draft) переводятся напрямую. Специфические для Jekyll постоянные ссылки и макеты могут потребовать ручного сопоставления с аналогами Hugo (url, type, layout).
Некоторые возможности YAML не имеют прямого отображения в TOML. Якоря и псевдонимы YAML (&anchor и *alias) разрешаются перед конвертацией, поэтому полученный TOML содержит развёрнутые значения, а не ссылки. Множественные YAML-документы (разделённые ---) не имеют TOML-эквивалента, поскольку TOML всегда является единственным документом. Ключи со специальными типами (даты как ключи словаря, ключи со специальными символами) могут потребовать кавычек в TOML. Значения null в YAML (~ или null) представляются как пустые строки или опускаются в TOML, поскольку в TOML нет встроенного типа null (TOML 1.0 не включает null).
Сгенерированный TOML синтаксически валиден согласно спецификации TOML 1.0 и может разбираться toml-rs (парсером Rust, используемым в Cargo) или другими стандартными TOML-библиотеками. Однако семантическая совместимость с Cargo.toml зависит от того, правильно ли входной YAML моделирует структуру манифеста Cargo: [package], [dependencies], [dev-dependencies], [[bin]], [[lib]] и т. д. Если ваш YAML уже моделирует эту структуру, полученный TOML будет валидным Cargo.toml. Если он происходит из другого источника (например, docker-compose.yml), полученный TOML потребует ручной адаптации.
Конвертация YAML в TOML: миграция Docker и GitHub Actions в экосистему Rust и Hugo
Конвертация YAML в TOML менее распространена, чем обратное направление, но имеет чётко определённые сценарии использования в современной экосистеме разработки. Наиболее актуальный — принятие TOML как стандарта конфигурации в Python: файл pyproject.toml, определённый PEP 518 в 2016 году и расширенный PEP 517 (система сборки), PEP 621 (метаданные проекта, 2021) и PEP 660 (редактируемые сборки), постепенно вытеснил setup.py, setup.cfg и requirements.txt как центральную конфигурацию для современных Python-проектов. Инструменты Poetry, Hatch, Flit и PDM используют pyproject.toml как источник истины. Если существующий Python-проект имеет часть конфигурации в YAML — например, поддерживаемые версии Python, определённые в воркфлоу GitHub Actions, или конфигурацию tox в YAML, — конвертация в TOML для централизации в pyproject.toml повышает удобство сопровождения.
В экосистеме Rust Cargo.toml является сердцем проекта: определяет имя крейта, версию (по Semantic Versioning), авторов, редакцию Rust (2015, 2018, 2021, 2024), зависимости с semver-версиями, опциональные фичи крейта, цели (бинарные файлы, библиотеки, примеры, тесты, бенчмарки) и конфигурацию воркспейса для монорепозиторных проектов. Когда команда переходит на Rust для нового сервиса в инфраструктуре, активно использующей YAML (docker-compose.yml для локальной разработки, манифесты Kubernetes для production, GitHub Actions для CI/CD), может потребоваться перенести части этой YAML-конфигурации в Cargo.toml. Практический пример: воркфлоу GitHub Actions определяет матрицу версий Rust для тестирования (stable, beta, nightly); эта информация может быть отражена в Cargo.toml воркспейса.
Миграция контента между генераторами статических сайтов — наиболее конкретный сценарий для YAML→TOML. Jekyll, созданный Томом Престоном-Вернером в 2008 году и являющийся движком GitHub Pages, популяризировал концепцию YAML-front matter с разделителями --- в Markdown-файлах. Hugo, самый быстрый генератор статических сайтов (написан на Go, обеспечивает сборку типичного сайта из тысяч страниц за миллисекунды), принял TOML как предпочтительный формат front matter в ранних версиях, хотя поддерживает также YAML и JSON. Миграция сайта с Jekyll на Hugo — популярная среди разработчиков, ищущих повышения производительности для больших сайтов, — требует конвертации YAML-front matter каждого Markdown-файла в формат TOML с разделителями +++. Для сайта с сотнями публикаций это автоматизируется скриптами Python (PyYAML + toml) или Node.js (js-yaml + @iarna/toml), а данный инструмент используется для валидации конвертации отдельных случаев.