इस लेख में
TOML क्या है?
TOML (Tom's Obvious, Minimal Language) एक कॉन्फ़िगरेशन फ़ाइल फ़ॉर्मेट है जिसे पढ़ने और लिखने में आसान बनाने के लिए डिज़ाइन किया गया है। Tom Preston-Werner (GitHub के सह-संस्थापक) द्वारा बनाया गया TOML किसी हैश टेबल पर साफ़-साफ़ मैप होता है और अस्पष्टता रहित होने के लिए बना है — हर TOML दस्तावेज़ की ठीक एक ही मान्य व्याख्या होती है।
TOML, Rust (Cargo.toml), Python (pyproject.toml) और कई स्टैटिक साइट जनरेटरों का पसंदीदा कॉन्फ़िगरेशन फ़ॉर्मेट है। यह कमेंट, डेट-टाइम लिटरल और नेस्टेड टेबल का समर्थन करता है, फिर भी YAML से सरल और JSON से अधिक मानव-अनुकूल रहता है।
TOML सिंटैक्स नियम
TOML सिंटैक्स को न्यूनतम और अस्पष्टता रहित बनाने के लिए डिज़ाइन किया गया है। यहाँ भाषा के मुख्य तत्व दिए गए हैं।
- की/वैल्यू जोड़े — बुनियादी इकाई, हर लाइन पर key = value के रूप में लिखे जाते हैं। की बेयर (बिना कोट के), कोट में, या नेस्टेड पहुँच के लिए डॉट वाली हो सकती हैं।
- टेबल — [table_name] हेडर से परिभाषित सेक्शन जो संबंधित की/वैल्यू जोड़ों को समूहित करते हैं। टेबल को डॉट वाली की या [[array_of_tables]] सिंटैक्स से नेस्ट किया जा सकता है।
- ऐरे — वर्गाकार ब्रैकेट [1, 2, 3] से परिभाषित क्रमबद्ध सूचियाँ। सभी तत्व एक ही प्रकार के होने चाहिए। बहु-पंक्ति ऐरे की अनुमति है, अंत में कॉमा के साथ भी।
- डेट-टाइम लिटरल — TOML स्वाभाविक रूप से RFC 3339 तिथियों जैसे 2026-03-15T14:30:00Z, स्थानीय तिथियों (2026-03-15), स्थानीय समय (14:30:00) और डेट-टाइम ऑफ़सेट का समर्थन करता है।
- मल्टीलाइन स्ट्रिंग — ट्रिपल-कोट वाली स्ट्रिंग ("""text""") लाइन ब्रेक को सुरक्षित रखती हैं और बिना एस्केप सीक्वेंस के लंबा कंटेंट रखने देती हैं। लिटरल स्ट्रिंग सिंगल कोट ('no\escape') इस्तेमाल करती हैं।
सामान्य TOML पैटर्न
TOML का व्यापक रूप से अलग-अलग इकोसिस्टम की प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइलों में इस्तेमाल होता है।
- Cargo.toml — Rust का पैकेज मैनेजर प्रोजेक्ट मेटाडेटा, डिपेंडेंसी, बिल्ड प्रोफ़ाइल और वर्कस्पेस कॉन्फ़िगरेशन के लिए TOML इस्तेमाल करता है
- pyproject.toml — Python का आधुनिक बिल्ड सिस्टम कॉन्फ़िगरेशन, PEP 517/518 द्वारा परिभाषित, setup.py और setup.cfg की जगह एक मानकीकृत TOML फ़ाइल लेता है
- Hugo कॉन्फ़िग — Hugo स्टैटिक साइट जनरेटर थीम, मेन्यू, टैक्सोनॉमी और बिल्ड सेटिंग समेत साइट कॉन्फ़िगरेशन के लिए TOML (या YAML/JSON) इस्तेमाल करता है
- Netlify कॉन्फ़िग — netlify.toml, Netlify साइटों के लिए बिल्ड कमांड, रीडायरेक्ट नियम, एनवायरनमेंट वैरिएबल और डिप्लॉय संदर्भ कॉन्फ़िगर करता है
निःशुल्क आज़माएँ — कोई साइनअप आवश्यक नहीं
TOML ऑनलाइन वैलिडेट करें →आम वैलिडेशन त्रुटियाँ
TOML डिज़ाइन से ही सख़्त है — कई त्रुटियाँ जिन्हें YAML चुपचाप स्वीकार कर लेता है, TOML में विफल हो जाती हैं। यहाँ सबसे आम वैलिडेशन समस्याएँ हैं।
- डुप्लिकेट की — TOML एक ही टेबल में एक ही की को दो बार परिभाषित करने से मना करता है। इसमें डॉट वाली नोटेशन से सेट की गई की और सामान्य टेबल हेडर दोनों शामिल हैं।
- अमान्य तिथि फ़ॉर्मेट — TOML को RFC 3339 तिथियाँ चाहिए। आम ग़लतियों में T सेपरेटर छूट जाना (2026-03-15T14:30:00 के बजाय 2026-03-15 14:30:00), या हाइफ़न के बजाय स्लैश इस्तेमाल करना शामिल है।
- मिश्रित ऐरे प्रकार — TOML ऐरे के सभी तत्व एक ही प्रकार के होने चाहिए। [1, "two", 3] अमान्य है क्योंकि यह पूर्णांक और स्ट्रिंग को मिलाता है।
- बिना बंद की गई स्ट्रिंग — कोट वाली स्ट्रिंग को बंद करना भूलना या ग़लत कोट प्रकार इस्तेमाल करना पार्स त्रुटियाँ पैदा करता है। मल्टीलाइन स्ट्रिंग में बेमेल ट्रिपल कोट्स से सावधान रहें।
TOML बनाम YAML बनाम JSON
हर फ़ॉर्मेट की अपनी ख़ूबियाँ हैं जो उसे कुछ ख़ास उपयोगों के लिए अधिक उपयुक्त बनाती हैं।
- पठनीयता — TOML और YAML दोनों इंसानों के लिए बहुत पठनीय हैं। TOML स्पष्ट सिंटैक्स (ब्रैकेट, बराबर के चिह्न) इस्तेमाल करता है जबकि YAML इंडेंटेशन पर निर्भर करता है। ज़रूरी कोट्स और कमेंट न होने के कारण JSON कॉन्फ़िगरेशन के लिए कम पठनीय है।
- सख़्ती — TOML तीनों में सबसे सख़्त है। यह अस्पष्ट संरचनाओं को अस्वीकार करता है और इसमें कोई अंतर्निहित टाइप कोअर्शन नहीं है। YAML का लचीलापन (बूलियन के रूप में yes/no, बेयर स्ट्रिंग) अक्सर अप्रत्याशित व्यवहार पैदा करता है।
- कमेंट — TOML और YAML दोनों कमेंट का समर्थन करते हैं (TOML # इस्तेमाल करता है, YAML भी # इस्तेमाल करता है)। JSON में कमेंट का बिल्कुल समर्थन नहीं है, जिससे यह उन कॉन्फ़िगरेशन फ़ाइलों के लिए कम उपयुक्त है जिन्हें दस्तावेज़ीकरण चाहिए।
अक्सर पूछे जाने वाले सवाल
TOML में नेस्टेड टेबल कैसे काम करती हैं?
TOML दो तरीक़ों से नेस्टेड टेबल का समर्थन करता है: डॉट वाली की (a.b.c = value) और टेबल हेडर ([parent.child])। दोनों एक ही नेस्टेड संरचना बनाते हैं। टेबल के ऐरे के लिए (जैसे कई पैकेज डिपेंडेंसी), डबल ब्रैकेट ([[array_name]]) इस्तेमाल करें। हर [[array_name]] ब्लॉक ऐरे में एक नया तत्व जोड़ता है।
TOML v1.0 और पुराने संस्करणों में क्या अंतर हैं?
TOML v1.0 (जनवरी 2021 में जारी) पहला स्थिर रिलीज़ है। 1.0 से पहले के ड्राफ़्ट से मुख्य बदलावों में स्पष्ट किया गया डेटटाइम हैंडलिंग, औपचारिक इनलाइन टेबल सिमेंटिक्स और परिष्कृत टेबल-के-ऐरे व्यवहार शामिल हैं। अधिकांश आधुनिक टूल TOML v1.0 इस्तेमाल करते हैं — अगर आप नई कॉन्फ़िगरेशन फ़ाइलें लिख रहे हैं, तो v1.0 को लक्ष्य बनाएँ।
मैं YAML को TOML में कैसे बदलूँ?
YAML और TOML के डेटा मॉडल अलग हैं, इसलिए रूपांतरण हमेशा एक-के-बदले-एक नहीं होता। सरल की-वैल्यू संरचनाएँ और नेस्टेड ऑब्जेक्ट सीधे बदल जाते हैं। एंकर, एलियास और जटिल की जैसी YAML सुविधाओं का कोई TOML समकक्ष नहीं है। अधिकांश कॉन्फ़िगरेशन फ़ाइलों के लिए रूपांतरण सीधा है — YAML डिक्शनरी को TOML टेबल पर और YAML सूचियों को TOML ऐरे पर मैप करें।