Форматировщик и валидатор YAML
Вставьте YAML, форматируйте с отступом в 2 пробела или валидируйте синтаксис. Строгий режим YAML 1.2. Без загрузки.
- Вставьте свой YAML в текстовое поле слева.
- Нажмите «Форматировать», чтобы пропустить через парсер и выдать канонический YAML.
- Нажмите «Валидировать», чтобы проверить синтаксис без изменения ввода.
- Ошибки указывают на проблемную строку и столбец.
Что это делает?
Парсит ваш YAML с помощью js-yaml в строгом режиме YAML 1.2 и заново выводит с отступом в 2 пробела, шириной строки 100 столбцов и согласованным экранированием. Кнопка «Валидировать» проверяет синтаксис и сообщает о первой ошибке без изменения ввода. Вывод семантически эквивалентен вводу — значения, типы и структура сохраняются.
Пример
Беспорядочный YAML-ввод:
name: Ada
tags: [math,logic]
active:true Отформатированный вывод:
name: Ada
tags:
- math
- logic
active: true Типичные ошибки YAML и как их исправить
YAML 1.2 в строгом режиме безжалостен к пробелам. Шаблоны ниже покрывают большинство сбоев парсера.
- Табы вместо пробелов. YAML 1.2 запрещает табы для отступов. Замените каждый таб пробелами.
- Несогласованные уровни отступов. Дочерний элемент с отступом 2 пробела под соседом с 4 пробелами вызовет ошибку. Выберите одну ширину и используйте её последовательно.
- Булевы ловушки. В YAML 1.1 (не этот режим) `yes`, `no`, `on`, `off` парсились как булевы. js-yaml использует 1.2, но реальные входы, зависящие от старого поведения, удивляют пользователей. Заключите неоднозначные значения в кавычки: `country: "NO"`.
- Спецсимволы без кавычек. Значения, начинающиеся с `:`, `?`, `&`, `*`, `!`, `|`, `>`, `\'`, `"`, `%`, `@`, `` ` `` нужно брать в кавычки.
- Незакрытая кавычка. Пропущенная закрывающая кавычка заставляет парсер поглотить остаток файла как часть строки. Сообщённый номер строки может быть далеко от реальной ошибки.
- Несовпадение anchor / alias. Alias `*name`, ссылающийся на необъявленный anchor `&name`, вызывает ошибку. Убедитесь, что у каждого alias есть соответствующий anchor, объявленный ранее.
Часто задаваемые вопросы
Меняет ли форматирование мои данные?
Нет — только пробелы, экранирование и порядок представительных деталей. Граф разобранных значений идентичен. Отформатированный YAML повторно парсится в ту же in-memory-структуру, что и оригинал.
Сохраняются ли комментарии при форматировании?
Нет. js-yaml не сохраняет комментарии при цикле parse-and-dump. Если нужно форматирование YAML с сохранением комментариев, используйте другую библиотеку (yaml.js с опциями) или CLI-инструмент вроде `prettier --parser yaml`.
Можно ли настроить отступ?
Текущая сборка использует отступ 2 пробела. Чтобы настроить, запустите js-yaml в командной строке — та же библиотека — и передайте `{ indent: 4 }` или что вам нужно.
Какой максимальный размер YAML-файла?
До примерно 10 МБ, прежде чем текстовое поле замедлится. Большинство конфигов сильно меньше 1 МБ.
Загружается ли мой YAML?
Нет. Всё работает в вашем браузере — ввод парсится и сериализуется JavaScript на этой странице и не отправляется ни на какой сервер.
Линтит ли это стилевые проблемы вроде дублирующихся ключей?
js-yaml в стандартной конфигурации отвергает дублирующиеся ключи (строгое требование YAML 1.2). Другие стилевые проблемы вроде непоследовательного экранирования или именования anchor не помечаются — для этого нужен специализированный линтер вроде yamllint.