Форматтер и валидатор YAML (YML)

Форматируйте, проверяйте, сжимайте и скачивайте YAML с сохранением комментариев и точным указанием ошибок.

Форматирование сохраняет комментарии. Компактный вывод удаляет их и использует потоковый стиль.

Что такое форматтер YAML/YML?

YAML (YAML Ain't Markup Language) — читаемый формат для конфигураций приложений, CI/CD, Docker Compose и описаний API. Инструмент форматирует, проверяет и сжимает YAML или YML прямо в браузере, не загружая содержимое на сервер.

Как пользоваться

  1. Вставьте YAML или YML в редактор.
  2. Выберите отступ в два или четыре пробела и ширину строки.
  3. Нажмите Форматировать YAML, Сжать YAML или Валидировать.
  4. Скопируйте результат или скачайте файл .yaml.

✨ Основные функции

  • 🎯 Проверка формата: Проверяет ошибки синтаксиса YAML и предоставляет подробные подсказки
  • 🎨 Форматирование: Автоматически выравнивает содержимое YAML и отступы
  • 🗜️ Сжатие содержимого: Удаляет лишние пробелы и комментарии для уменьшения размера файла
  • 📋 Копирование одним кликом: Отформатированные результаты можно скопировать напрямую для использования
  • 🔧 Местоположение ошибок: Точно определяет позиции синтаксических ошибок
  • 💾 Скачивание YAML: Сохраняет отформатированный результат в файл .yaml

📖 Примеры использования

Пример форматирования

Исходный YAML:

name:ToolMi
version:1.0.0
features:
- format
- validate
- compress
config:
  debug:true
  port:3000

После форматирования:

name: ToolMi
version: 1.0.0
features:
  - format
  - validate
  - compress
config:
  debug: true
  port: 3000

Пример сложной структуры

Входной YAML:

database:
  host: localhost
  port: 5432
  credentials:
    username: admin
    password: secret
  pools:
    - name: read_pool
      size: 10
    - name: write_pool
      size: 5

После проверки и beautification:

database:
  host: localhost
  port: 5432
  credentials:
    username: admin
    password: secret
  pools:
    - name: read_pool
      size: 10
    - name: write_pool
      size: 5

🎯 Сценарии применения

1. Форматирование YAML (YML) конфигурационных файлов приложений

Организация и проверка файлов конфигурации приложения:

# Файл конфигурации приложения (config.yml)
app:
  name: ToolMi
  version: 1.0.0
  environment: production
  
server:
  host: 0.0.0.0
  port: 3000
  ssl:
    enabled: true
    cert_path: /etc/ssl/certs/app.crt
    key_path: /etc/ssl/private/app.key
    
database:
  type: postgresql
  host: localhost
  port: 5432
  name: toolmi_db
  username: ${DB_USER}
  password: ${DB_PASSWORD}
  pool:
    min_connections: 2
    max_connections: 10
    
redis:
  host: localhost
  port: 6379
  password: ${REDIS_PASSWORD}
  db: 0
  
logging:
  level: info
  format: json
  outputs:
    - type: file
      path: /var/log/app.log
    - type: console

2. Форматирование YAML (YML) конфигураций Docker Compose

Управление конфигурацией оркестрации контейнеров Docker:

# docker-compose.yml
version: '3.8'

services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DB_HOST=database
    depends_on:
      - database
      - redis
    volumes:
      - ./uploads:/app/uploads
    networks:
      - app-network
      
  database:
    image: postgres:13
    environment:
      POSTGRES_DB: toolmi_db
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - app-network
      
  redis:
    image: redis:6-alpine
    command: redis-server --requirepass ${REDIS_PASSWORD}
    volumes:
      - redis_data:/data
    networks:
      - app-network

volumes:
  postgres_data:
  redis_data:

networks:
  app-network:
    driver: bridge

3. Форматирование YAML (YML) для конвейеров CI/CD

Конфигурация рабочего процесса GitHub Actions:

# .github/workflows/deploy.yml
name: Развертывание в Production

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  NODE_VERSION: '18'
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}

jobs:
  test:
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout кода
        uses: actions/checkout@v3
        
      - name: Настройка Node.js
        uses: actions/setup-node@v3
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: 'npm'
          
      - name: Установка зависимостей
        run: npm ci
        
      - name: Запуск тестов
        run: npm test
        
      - name: Запуск linting
        run: npm run lint
        
  build:
    needs: test
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout кода
        uses: actions/checkout@v3
        
      - name: Сборка Docker образа
        run: |
          docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest .
          
      - name: Push в реестр
        run: |
          echo ${{ secrets.GITHUB_TOKEN }} | docker login ${{ env.REGISTRY }} -u ${{ github.actor }} --password-stdin
          docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest

4. Форматирование YAML (YML) манифестов Kubernetes

Файлы конфигурации развертывания Kubernetes:

# deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: toolmi-app
  labels:
    app: toolmi
spec:
  replicas: 3
  selector:
    matchLabels:
      app: toolmi
  template:
    metadata:
      labels:
        app: toolmi
    spec:
      containers:
        - name: app
          image: toolmi/app:latest
          ports:
            - containerPort: 3000
          env:
            - name: NODE_ENV
              value: "production"
            - name: DB_HOST
              valueFrom:
                secretKeyRef:
                  name: app-secrets
                  key: db-host
          resources:
            requests:
              memory: "256Mi"
              cpu: "250m"
            limits:
              memory: "512Mi"
              cpu: "500m"
          livenessProbe:
            httpGet:
              path: /health
              port: 3000
            initialDelaySeconds: 30
            periodSeconds: 10
          readinessProbe:
            httpGet:
              path: /ready
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 5

---
apiVersion: v1
kind: Service
metadata:
  name: toolmi-service
spec:
  selector:
    app: toolmi
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
  type: LoadBalancer

🔧 Технические детали

Правила синтаксиса YAML

Основные правила синтаксиса YAML:

Правила отступов:

  • Используйте пробелы для отступов, табуляция не разрешена
  • Элементы на одном уровне должны быть выровнены по левому краю
  • Дочерние элементы должны иметь больший отступ, чем родительские

Типы данных:

  • Строки: Могут быть без кавычек, специальные символы требуют кавычек
  • Числа: Целые и числа с плавающей точкой
  • Булевы значения: true/false, yes/no, on/off
  • Null значения: null, ~, или пусто

Типы коллекций:

  • Массивы: Используйте - для указания элементов списка
  • Объекты: Используйте key: value для представления пар ключ-значение
  • Вложенность: Поддерживает произвольные уровни вложенных структур

Распространенные ошибки

Распространенные ошибки, которые может обнаружить форматер YAML:

Ошибки отступов:

# Неправильный пример
config:
  debug: true
 port: 3000  # Несогласованный отступ

# Правильный пример
config:
  debug: true
  port: 3000

Проблемы с кавычками:

# Неправильный пример
message: It's a test  # Неэкранированная одинарная кавычка

# Правильный пример
message: "It's a test"
# или
message: 'It''s a test'

Формат списка:

# Неправильный пример
features:
- format
 - validate  # Ошибка отступа

# Правильный пример
features:
  - format
  - validate

💡 Советы по использованию

  • Согласованные отступы: Всегда используйте одинаковое количество пробелов для отступов (рекомендуется 2 пробела)
  • Использование кавычек: Окружайте строки, содержащие специальные символы, кавычками
  • Стандарты комментариев: Используйте # для добавления комментариев, добавляйте пробел перед комментариями
  • Многострочные строки: Используйте | или > для обработки многострочного текста

⚠️ Важные замечания

  • Запрет табуляции: YAML не разрешает табуляцию, можно использовать только пробелы
  • Чувствительность к отступам: Ошибки отступов вызовут сбои парсинга
  • Специальные символы: Двоеточия, кавычки и другие специальные символы требуют правильной обработки
  • Формат кодировки: Убедитесь, что файлы используют кодировку UTF-8

🚀 Начало работы

  1. Ввод YAML: Вставьте содержимое YAML для обработки в поле ввода
  2. Выбор операции: Нажмите кнопку "Форматировать", "Проверить" или "Сжать"
  3. Просмотр результатов: Проверьте обработанный YAML в поле вывода
  4. Копирование или скачивание: Скопируйте результат или сохраните его как formatted.yaml
  5. Исправление ошибок: Исправьте проблемы синтаксиса на основе подсказок об ошибках

Совет: Этот инструмент обрабатывает локально на стороне клиента и не загружает содержимое YAML на сервер, обеспечивая безопасность данных.

❓ Частые вопросы

В1: Форматирование не удалось?
О: Проверьте синтаксис перед форматированием.

В2: Можно минифицировать?
О: Да. Режим сжатия использует потоковый стиль и удаляет комментарии.

В3: Сохранить комментарии?
О: Обычное форматирование сохраняет комментарии; только сжатие удаляет их.