YAML и конфигурация

Комментарии в YAML: синтаксис, правила оформления и экранирование

В YAML и YML комментарии пишутся одинаково: поставьте # в начале строки или отделите его пробелом от значения. Комментарий продолжается до конца строки.

Опубликовано · Обновлено

Разбор YAML с комментариями

Четыре значения символа # в одном примере

Пояснения показывают границы синтаксиса парсера; цвет служит лишь визуальной подсказкой.

# полнострочный комментарий
service:
  port: 8080 # инлайн-комментарий
  tag: "#release"
  message: |
    # это содержимое скаляра
  1. Полнострочный комментарийПарсер полностью игнорирует всю строку.
  2. Инлайн-комментарий# отделён от значения пробелом; текст после # игнорируется.
  3. Литерал в кавычках#release остается частью строки данных.
  4. Содержимое блочного скаляраСимвол # с отступом принадлежит значению message.

Распарсенные данные

Что становится частью значения?

Из этих четырех случаев символ # в кавычках и внутри блочного скаляра является данными. Полнострочный и инлайн # являются комментариями.

Как закомментировать несколько строк в YAML

Добавьте # в начало каждой строки. Отдельного блочного комментария вроде /* ... */ в YAML нет.

# Временно отключённый сервис
# service:
#   port: 8080
#   debug: true

Блоки | и > создают многострочные значения: парсер сохраняет их как данные. Они не заменяют комментарии.

Нужен ли пробел перед #?

После обычного значения — да. Без разделяющего пробела решётка внутри такого слова остаётся частью строки.

label: abc#def  # значение: abc#def
name: abc # def — комментарий; значение: abc
color: "#ff8800"  # значение начинается с решётки

Эти правила одинаковы для файлов .yaml и .yml. Основа правила — спецификация YAML, раздел Comments.

Частая ошибка

Оберните в кавычки значение, начинающееся с #

Комментарий, а не данные
tag: #release
Текстовые данные
tag: "#release"

Редактирование YAML с комментариями

Проверьте полнострочные и встроенные комментарии

Комментарии поясняют настройку, не становясь частью её значения.

# Production settings
port: 8080 # Public HTTP port
label: "build #42"
message: |
  # This line is scalar content

Ожидаемый результат: Корректный YAML; символы # в кавычках и блочном значении остаются данными.

Проверьте конфигурацию

Форматирование YAML с комментариями

Проверьте синтаксис ваших YAML файлов в онлайн-форматтере с сохранением комментариев.

Открыть YAML Formatter →