tsconfig.json जनरेशन: हुड के नीचे क्या छिपा है?

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: tsconfig.json सिर्फ एक फ़ाइल क्यों नहीं है?

\n\n

हर कोई जिसने कभी TypeScript में लिखा है, उसने रहस्यमयी फ़ाइल tsconfig.json देखी है। यदि आप नौसिखिया हैं, तो संभवतः आपने इसे डॉक्यूमेंटेशन से कॉपी किया होगा या "tsconfig.json कैसे जनरेट करें" गूगल किया होगा। और यदि आप एक अनुभवी डेवलपर हैं - तो शायद आपने कभी सोचा होगा: जब मैं tsc --init चलाता हूँ तो हुड के नीचे वास्तव में क्या होता है?

\n\n

इस लेख में हम सिर्फ एक तैयार रेसिपी नहीं देंगे, बल्कि TypeScript कंपाइलर के इंजन रूम में झाँकेंगे। आप जानेंगे कि कंपाइलर कॉन्फ़िगरेशन कैसे पढ़ता है, कौन से फ्लैग कोड की सख्ती के लिए जिम्मेदार हैं, और अपना खुद का न्यूनतम tsconfig.json "जनरेटर" कैसे लिखें। चलिए शुरू करते हैं!

\n\n

1. tsconfig.json क्या है और इसकी आवश्यकता क्यों है?

\n\n

tsconfig.json एक JSON फ़ाइल है जो TypeScript कंपाइलर (tsc) को बताती है कि आपके कोड को कैसे प्रोसेस करना है। इसके बिना tsc "डिफ़ॉल्ट" मोड में काम करेगा, लेकिन अक्सर यह गंभीर प्रोजेक्ट्स के लिए पर्याप्त नहीं होता है।

\n\n

हुड के नीचे tsconfig.json निर्धारित करता है:

\n
    \n
  • कौन सी फ़ाइलें कंपाइल करनी हैं (कुंजी include, exclude, files)।
  • \n
  • परिणाम कहाँ रखना है (कुंजी outDir)।
  • \n
  • JavaScript के कौन से संस्करण सपोर्ट करने हैं (कुंजी target)।
  • \n
  • टाइप्स की जाँच कितनी सख्ती से करनी है (कुंजी strict, noImplicitAny और अन्य)।
  • \n
  • अतिरिक्त मॉड्यूल और पथ।
  • \n
\n\n

जब आप प्रश्न पूछते हैं "how can I generate a tsconfig.json file", तो उत्तर आमतौर पर एक होता है: tsc --init। लेकिन आइए समझें कि यह कमांड वास्तव में क्या जनरेट करती है।

\n\n

2. tsc --init कमांड: हुड के नीचे क्या है?

\n\n

टर्मिनल में चलाएँ:

\n
npx tsc --init
\n\n

प्रोजेक्ट की रूट में ढेर सारी कमेंटेड सेटिंग्स के साथ एक फ़ाइल tsconfig.json दिखाई देगी। वास्तव में, हुड के नीचे TypeScript कंपाइलर निम्नलिखित एल्गोरिदम निष्पादित करता है:

\n\n
    \n
  1. जाँचता है कि क्या वर्तमान निर्देशिका में पहले से tsconfig.json मौजूद है।
  2. \n
  3. यदि नहीं है - तो डिफ़ॉल्ट सेटिंग्स के साथ एक टेम्पलेट बनाता है।
  4. \n
  5. target: "es2016", module: "commonjs", strict: true और अन्य उचित मान सेट करता है।
  6. \n
  7. बाकी सभी विकल्पों को कमेंट कर देता है, ताकि डेवलपर ज़रूरत पड़ने पर उन्हें अनकमेंट कर सके।
  8. \n
\n\n

लेकिन क्या होगा यदि आप जनरेशन को कस्टमाइज़ करना चाहते हैं? उदाहरण के लिए, तुरंत स्ट्रिक्ट मोड चालू करना या आउटपुट फ़ाइलों के लिए पथ सेट करना? इसके लिए आप अपनी स्क्रिप्ट लिख सकते हैं।

\n\n

2.1. उदाहरण: TypeScript पर अपना tsconfig.json जनरेटर

\n\n

कल्पना करें कि आप प्रोजेक्ट्स को स्वचालित रूप से कॉन्फ़िगर करने के लिए एक टूल लिख रहे हैं। यहाँ एक फ़ंक्शन दिया गया है जो हुड के नीचे tsconfig.json जनरेट करता है:

\n\n
import * as fs from 'fs';\nimport * as path from 'path';\n\ninterface TsConfig {\n  compilerOptions: {\n    target: string;\n    module: string;\n    strict: boolean;\n    outDir: string;\n    rootDir: string;\n    esModuleInterop: boolean;\n    skipLibCheck: boolean;\n    forceConsistentCasingInFileNames: boolean;\n  };\n  include: string[];\n  exclude: string[];\n}\n\nfunction generateTsConfig(\n  target: string = 'ES2020',\n  outDir: string = './dist',\n  rootDir: string = './src',\n  strict: boolean = true\n): TsConfig {\n  return {\n    compilerOptions: {\n      target,\n      module: 'commonjs',\n      strict,\n      outDir,\n      rootDir,\n      esModuleInterop: true,\n      skipLibCheck: true,\n      forceConsistentCasingInFileNames: true,\n    },\n    include: ['src/**/*'],\n    exclude: ['node_modules', 'dist'],\n  };\n}\n\n// जनरेट करें और सेव करें\nconst config = generateTsConfig();\nfs.writeFileSync(\n  path.join(process.cwd(), 'tsconfig.json'),\n  JSON.stringify(config, null, 2)\n);\nconsole.log('tsconfig.json बन गया!');\n

ब्लॉग

पुस्तक अनुशंसाएँ