Найти в Дзене
VarNote

YAML кажется простым, пока не наткнёшься на «магические» значения, отступы и странные преобразования типов

YAML кажется простым, пока не наткнёшься на «магические» значения, отступы и странные преобразования типов. Вот быстрый чек-лист, чтобы не попасть: 1. Булевы ловушки # Плохо enabled: yes # станет true answer: No # станет false # Хорошо enabled: true answer: "No" # строка 2. Ведущие нули # Плохо port: 080 # Хорошо port: "080" # строка 3. Даты как строки # Плохо version: 2025-08-16 # Хорошо version: "2025-08-16" 4. Только пробелы, без табов items: - a - b 5. Анкоры и алиасы (DRY) base: &base image: nginx:latest web: <<: *base replicas: 2 6. Многострочные строки: `|` vs `>` | — сохраняет переносы строк. > — сворачивает переносы в пробелы (получается один абзац). # перенос сохранится literal: | line1 line2 # станет "line1 line2" folded: > line1 line2 7. Порядок важен? Используй список fields: - name: title - name: date Быстрый чек-лист перед коммитом - Пробелы вместо табов, 2 пробела на отступ. - Булевы — только true/false; всё неоднозначное — в кавычки. - Числа без в

YAML кажется простым, пока не наткнёшься на «магические» значения, отступы и странные преобразования типов.

Вот быстрый чек-лист, чтобы не попасть:

1. Булевы ловушки

# Плохо

enabled: yes # станет true

answer: No # станет false

# Хорошо

enabled: true

answer: "No" # строка

2. Ведущие нули

# Плохо

port: 080

# Хорошо

port: "080" # строка

3. Даты как строки

# Плохо

version: 2025-08-16

# Хорошо

version: "2025-08-16"

4. Только пробелы, без табов

items:

- a

- b

5. Анкоры и алиасы (DRY)

base: &base

image: nginx:latest

web:

<<: *base

replicas: 2

6. Многострочные строки: `|` vs `>`

| — сохраняет переносы строк.

> — сворачивает переносы в пробелы (получается один абзац).

# перенос сохранится

literal: |

line1

line2

# станет "line1 line2"

folded: >

line1

line2

7. Порядок важен? Используй список

fields:

- name: title

- name: date

Быстрый чек-лист перед коммитом

- Пробелы вместо табов, 2 пробела на отступ.

- Булевы — только true/false; всё неоднозначное — в кавычки.

- Числа без ведущих нулей; формат — строкой.

- Даты — в кавычки, если это не дата.

- Многострочные: | для конфигов/скриптов, > для абзацев.

- Если порядок важен — список словарей, не map.

- Анкоры с понятными именами, избегать «матрёшек» из мержей.

- Прогон через валидатор/линтер обязателен.

https://varnote.ru/other/magic-yaml/

varnote | #varnote #yaml