تخطي إلى المحتوى

لا يمكن تحويل هذا النوع من الملفات في المتصفح.

┐─ تحليل الملف ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
المطور : Clark Evans وIngy dot Net وOren Ben-Kiki
الفئة : بيانات
نوع MIME : text/yaml
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

ما هو ملف YAML؟

YAML (YAML Ain’t Markup Language — YAML ليست لغة ترميز، اسم متكرر بذاته) هو صيغة تسلسل بيانات صديقة للإنسان أنشأها Clark Evans وIngy dot Net وOren Ben-Kiki عام 2001. يستخدم المسافة البادئة (Indentation) لتمثيل البنية الهرمية، مما يجعله أكثر قابلية للقراءة من JSON أو XML.

المزية الرئيسية لـ YAML: إزالة علامات ترقيم مزعجة كالأقواس المتعرجة والمربعة والفواصل، مع الحفاظ على دعم كامل للهياكل المعقدة كالقوائم المتداخلة والقواميس. لكن هذا الاعتماد على المسافات مصدر أخطاء شائعة — خلط Tab مع مسافات يُعطب الملف.

كيفية فتح ملفات YAML

  • VS Code (ويندوز، ماك، لينكس) — دعم YAML مدمج مع تلوين وتحقق
  • Zed Editor — دعم YAML أصلي
  • IntelliJ IDEA (ويندوز، ماك، لينكس) — مع إضافة YAML
  • أي محرر نصوص — ملفات YAML نص عادي
  • YAML Lint (yamlint.com) — التحقق من الصحة عبر الإنترنت
  • Python: import yaml (PyYAML) أو import ruamel.yaml

المواصفات التقنية

الخاصيةالقيمة
الإصدار الحاليYAML 1.2.2 (2021)
الترميزUTF-8، UTF-16، UTF-32
البنيةقائمة على المسافة البادئة
أنواع البياناتنص، عدد، عشري، منطقي، null، تاريخ، مصفوفة، قاموس
التعليقاتيبدأ بـ #
المستندات المتعددة--- للفصل بين المستندات
الأنكور والمرجع&anchor و*alias

الاستخدامات الشائعة

  • DevOps وKubernetes: ملفات deployment.yaml وservice.yaml وconfigmap.yaml هي لغة Kubernetes الأساسية
  • CI/CD: GitHub Actions وGitLab CI وCircleCI وAzure Pipelines جميعها تعتمد YAML لتعريف خطوط الأنابيب
  • Docker Compose: ملف docker-compose.yml لتعريف الخدمات والشبكات والأحجام
  • إعدادات إطارات العمل: Rails وSpring Boot وNextJS وAstro تستخدم YAML للإعدادات
  • OpenAPI/Swagger: تعريف واجهات برمجة التطبيقات REST بصيغة YAML المقروءة

YAML مقابل JSON مقابل TOML

الميزةYAMLJSONTOML
قابلية القراءة✅ ممتازةمتوسطة✅ ممتازة
التعليقات
التداخل العميقمحدود
الغموضبعض الحالات✅ لا غموض✅ لا غموض
الاستخدامDevOps، K8sAPIsRust، Python

مثال Kubernetes YAML

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
  namespace: production
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: web
        image: myapp:v1.2
        ports:
        - containerPort: 8080
        env:
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: url

مثال GitHub Actions

name: CI Pipeline
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: تشغيل الاختبارات
        run: npm test