यदि किसी एक प्रोजेक्ट को एक अलग कोड फॉर्मैटर की आवश्यकता है, तो यह चयन प्रोजेक्ट स्तर पर सेट करें: उस प्रोजेक्ट की कॉन्फ़िगरेशन फ़ाइल का उपयोग करें और, यदि आप Visual Studio Code में काम करते हैं, तो इसकी वर्कस्पेस सेटिंग्स का उपयोग करें। यह प्रोजेक्ट के फ़ॉर्मैटिंग चयन को दोहराने योग्य बनाते हुए आपके VS Code यूज़र डिफ़ॉल्ट्स को सुरक्षित रखता है। नीचे दिए गए चरण macOS और VS Code पर केंद्रित हैं; अन्य एडिटर्स विभिन्न नियंत्रणों का उपयोग कर सकते हैं।

तय करें कि इस प्रोजेक्ट के लिए “फॉर्मैटर” का क्या अर्थ है

पहले भाषा और वास्तविक आवश्यकता की पहचान करें। एक फॉर्मैटर कोड को एक शैली (स्टाइल) के अनुसार फिर से लिखता है; एक बुनियादी एडिटर सेटिंग केवल इंडेंटेशन, लाइन एंडिंग्स या व्हाइटस्पेस को नियंत्रित कर सकती है। उदाहरण के लिए, EditorConfig प्रोजेक्ट स्टाइल प्रॉपर्टीज प्रदान करता है जिन्हें भाग लेने वाले एडिटर्स पढ़ सकते हैं, जबकि Prettier अपने स्वयं के प्रोजेक्ट कॉन्फ़िगरेशन के साथ एक फॉर्मैटर है। ये उपकरण एक-दूसरे के पूरक हो सकते हैं, लेकिन केवल एक EditorConfig फ़ाइल किसी फॉर्मैटर का चयन या इंस्टॉल नहीं करती है। EditorConfig इसके प्रारूप और एडिटर प्लगइन्स का वर्णन करता है; Prettier की कॉन्फ़िगरेशन गाइड बताती है कि यह समर्थित कॉन्फ़िगरेशन फ़ाइलों को कैसे पढ़ता है।

दूसरा जोड़ने से पहले जाँचें कि प्रोजेक्ट द्वारा कौन सा फॉर्मैटर पहले से उपयोग किया जा रहा है। इसके पैकेज मेनिफेस्ट, फॉर्मैटर कॉन्फ़िगरेशन और प्रोजेक्ट दस्तावेज़ देखें। यदि टीम के साथी या स्वचालित जाँच (automated checks) किसी विशेष टूल या वर्शन की अपेक्षा करते हैं, तो उस सेटअप से मेल खाना आमतौर पर सबसे व्यावहारिक विकल्प होता है। एक प्रतिस्पर्धी फॉर्मैटर इंस्टॉल करने या उसके विकल्पों को बदलने से कोड के काम करने के बावजूद बड़े अंतर (diffs) उत्पन्न हो सकते हैं।

चुनें कि सेटिंग कहाँ से संबंधित है

VS Code में, यूज़र सेटिंग्स एडिटर के आपके समग्र उपयोग पर लागू होती हैं, जबकि वर्कस्पेस सेटिंग्स खोले गए प्रोजेक्ट पर लागू होती हैं और यूज़र सेटिंग्स पर वरीयता लेती हैं। VS Code प्रोजेक्ट रूट पर एक .vscode फ़ोल्डर में वर्कस्पेस सेटिंग्स रखता है; यूज़र सेटिंग्स आपके macOS खाते की एप्लिकेशन सपोर्ट डायरेक्टरी में अलग से संग्रहीत की जाती हैं। प्रोजेक्ट सेटिंग को संपादित करने के लिए Command Palette (⇧⌘P) का उपयोग करें और Preferences: Open Workspace Settings (JSON) चुनें। कुछ भी बदलने से पहले पुष्टि करें कि सेटिंग्स एडिटर में Workspace लिखा हुआ है। VS Code का सेटिंग्स दस्तावेज़ इसके स्कोप और स्थानों की व्याख्या करता है।

इस प्रोजेक्ट में केवल किसी भाषा के लिए फॉर्मैटर चुनने के लिए, वर्कस्पेस सेटिंग्स में भाषा-विशिष्ट डिफ़ॉल्ट फॉर्मैटर प्रविष्टि जोड़ें। उदाहरण के लिए, यदि प्रोजेक्ट JavaScript के लिए Prettier VS Code एक्सटेंशन का उपयोग करता है, तो सेटिंग का रूप इस प्रकार होगा:

{
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}

अपने एडिटर में वास्तव में इंस्टॉल किए गए फॉर्मैटर के लिए एक्सटेंशन पहचानकर्ता (identifier) का उपयोग करें; यह उदाहरण कोई सार्वभौमिक पहचानकर्ता नहीं है। यदि प्रोजेक्ट में कई भाषाएँ शामिल हैं, तो ग्लोबल डिफ़ॉल्ट सेट करने के बजाय प्रत्येक प्रासंगिक भाषा के लिए एक प्रविष्टि जोड़ें। VS Code का Format Document With... कमांड आपको वर्तमान दस्तावेज़ के लिए उपलब्ध फॉर्मैटर्स में से चुनने की अनुमति देता है, और इसके फ़ॉर्मैट एक्शन को Command Palette से लागू किया जा सकता है। VS Code की फ़ॉर्मैटिंग गाइड उन नियंत्रणों का दस्तावेजीकरण करती है। जब तक आप यह न चाहें कि उस प्रोजेक्ट में प्रत्येक सेव फ़ॉर्मैटिंग को ट्रिगर करे, इस संकीर्ण बदलाव के हिस्से के रूप में फ़ॉर्मैट-ऑन-सेव (format-on-save) को सक्षम करने से बचें।

फॉर्मैटर के नियमों को प्रोजेक्ट के साथ रखें

एक डिफ़ॉल्ट फॉर्मैटर एक टूल का चयन करता है; यह उस टूल के सभी फ़ॉर्मैटिंग नियमों को परिभाषित नहीं करता है। साझा नियमों को एक कॉन्फ़िगरेशन फ़ाइल में संग्रहीत करें जिसे चुना गया फॉर्मैटर पहचानता है। Prettier के लिए, वह प्रोजेक्ट रूट पर एक .prettierrc.json फ़ाइल हो सकती है। एक न्यूनतम उदाहरण केवल उन विकल्पों को निर्दिष्ट कर सकता है जिनका उपयोग करने के लिए प्रोजेक्ट सहमत हुआ है:

{
  "singleQuote": true
}

Prettier कॉन्फ़िगरेशन के लिए उस फ़ाइल से जिसे फ़ॉर्मैट किया जा रहा है, उसकी पैरेंट डायरेक्टरीज़ तक ऊपर की ओर खोज करता है, इसलिए रूट-लेवल कॉन्फ़िगरेशन उसके नीचे की फ़ाइलों के लिए काम कर सकता है। यह कई अन्य कॉन्फ़िगरेशन प्रारूपों का भी समर्थन करता है; प्रोजेक्ट के वर्शन और मौजूदा टूलींग द्वारा समर्थित प्रारूप चुनें। Prettier का कॉन्फ़िगरेशन दस्तावेज़ समर्थित फ़ाइलों और रिज़ॉल्यूशन व्यवहार को सूचीबद्ध करता है।

यदि लक्ष्य केवल सभी एडिटर्स में सुसंगत इंडेंटेशन या लाइन एंडिंग्स रखना है, तो इसके बजाय रूट .editorconfig पर विचार करें। उदाहरण के लिए, root = true अधिक दूर की EditorConfig फ़ाइलों की खोज को रोकता है, और indent_style, indent_size, और end_of_line जैसी प्रॉपर्टीज बुनियादी टेक्स्ट परंपराओं को परिभाषित कर सकती हैं। एडिटर समर्थन प्लगइन के अनुसार भिन्न होता है, और ये प्रॉपर्टीज भाषा-जागरूक फ़ॉर्मैटिंग नियमों की जगह नहीं लेती हैं। EditorConfig विनिर्देश और अवलोकन वर्णन करते हैं कि फ़ाइलें कैसे खोजी जाती हैं और मिलान नियम कैसे लागू होते हैं।

फ़ॉर्मैट करने से पहले स्कोप सत्यापित करें

वर्कस्पेस सेटिंग और कॉन्फ़िगरेशन को सेव करें, फिर यदि आवश्यक हो तो VS Code में प्रोजेक्ट फ़ोल्डर को फिर से खोलें। एक प्रतिनिधि फ़ाइल खोलें और चयनित फॉर्मैटर की पुष्टि करने के लिए Format Document With... का उपयोग करें। यदि फॉर्मैटर सूचीबद्ध नहीं है, तो जाँचें कि इसका एक्सटेंशन इंस्टॉल है और उस भाषा का समर्थन करता है; एक वर्कस्पेस सेटिंग स्वयं कोई एक्सटेंशन इंस्टॉल नहीं कर सकती है या फॉर्मैटर समर्थन नहीं जोड़ सकती है।

व्यापक रूप से फ़ॉर्मैटिंग लागू करने से पहले, सोर्स कंट्रोल या डिफ व्यू में प्रभावित फ़ाइलों का निरीक्षण करें। पहले एक छोटे प्रतिनिधि सेट को फ़ॉर्मैट करें, विशेष रूप से यदि प्रोजेक्ट में मौजूदा स्टाइल नियम या जनरेट की गई फ़ाइलें हैं। यदि आउटपुट अप्रत्याशित है, तो रुकें और पैरेंट डायरेक्टरी में प्रतिस्पर्धी कॉन्फ़िगरेशन, भाषा-विशिष्ट सेटिंग, या किसी अन्य फॉर्मैटर की जाँच करें जिसकी प्रोजेक्ट पहले से अपेक्षा करता है। एडिटर के सोर्स कंट्रोल टूल्स के माध्यम से किसी अवांछित फ़ॉर्मैटिंग बदलाव को वापस पहले जैसा करें (रिवर्ट करें), फिर प्रोजेक्ट कॉन्फ़िगरेशन को समायोजित करें और एक छोटे सेट पर दोहराएँ।

यह निर्णय को प्रोजेक्ट से जोड़े रखता है: VS Code के यूज़र डिफ़ॉल्ट्स अपने अलग स्कोप में रहते हैं, जबकि प्रोजेक्ट अपने स्वयं के फॉर्मैटर चयन और नियमों को साथ रख सकता है। यदि आप एडिटर्स बदलते हैं, तो वर्कस्पेस सेटिंग आपके साथ नहीं जाएगी, इसलिए जब वह एडिटर इसका समर्थन करता हो, तो फॉर्मैटर के प्रोजेक्ट कॉन्फ़िगरेशन पर भरोसा करें।

स्रोत