परिचय: tsconfig.json सिर्फ एक फ़ाइल क्यों नहीं है?
\n\nहर कोई जिसने कभी TypeScript में लिखा है, उसने रहस्यमयी फ़ाइल tsconfig.json देखी है। यदि आप नौसिखिया हैं, तो संभवतः आपने इसे डॉक्यूमेंटेशन से कॉपी किया होगा या "tsconfig.json कैसे जनरेट करें" गूगल किया होगा। और यदि आप एक अनुभवी डेवलपर हैं - तो शायद आपने कभी सोचा होगा: जब मैं tsc --init चलाता हूँ तो हुड के नीचे वास्तव में क्या होता है?
इस लेख में हम सिर्फ एक तैयार रेसिपी नहीं देंगे, बल्कि TypeScript कंपाइलर के इंजन रूम में झाँकेंगे। आप जानेंगे कि कंपाइलर कॉन्फ़िगरेशन कैसे पढ़ता है, कौन से फ्लैग कोड की सख्ती के लिए जिम्मेदार हैं, और अपना खुद का न्यूनतम tsconfig.json "जनरेटर" कैसे लिखें। चलिए शुरू करते हैं!
\n\n1. tsconfig.json क्या है और इसकी आवश्यकता क्यों है?
\n\ntsconfig.json एक JSON फ़ाइल है जो TypeScript कंपाइलर (tsc) को बताती है कि आपके कोड को कैसे प्रोसेस करना है। इसके बिना tsc "डिफ़ॉल्ट" मोड में काम करेगा, लेकिन अक्सर यह गंभीर प्रोजेक्ट्स के लिए पर्याप्त नहीं होता है।
हुड के नीचे tsconfig.json निर्धारित करता है:
\n- \n
- कौन सी फ़ाइलें कंपाइल करनी हैं (कुंजी
include,exclude,files)। \n - परिणाम कहाँ रखना है (कुंजी
outDir)। \n - JavaScript के कौन से संस्करण सपोर्ट करने हैं (कुंजी
target)। \n - टाइप्स की जाँच कितनी सख्ती से करनी है (कुंजी
strict,noImplicitAnyऔर अन्य)। \n - अतिरिक्त मॉड्यूल और पथ। \n
जब आप प्रश्न पूछते हैं "how can I generate a tsconfig.json file", तो उत्तर आमतौर पर एक होता है: tsc --init। लेकिन आइए समझें कि यह कमांड वास्तव में क्या जनरेट करती है।
2. tsc --init कमांड: हुड के नीचे क्या है?
\n\nटर्मिनल में चलाएँ:
\nnpx tsc --init\n\nप्रोजेक्ट की रूट में ढेर सारी कमेंटेड सेटिंग्स के साथ एक फ़ाइल tsconfig.json दिखाई देगी। वास्तव में, हुड के नीचे TypeScript कंपाइलर निम्नलिखित एल्गोरिदम निष्पादित करता है:
- \n
- जाँचता है कि क्या वर्तमान निर्देशिका में पहले से
tsconfig.jsonमौजूद है। \n - यदि नहीं है - तो डिफ़ॉल्ट सेटिंग्स के साथ एक टेम्पलेट बनाता है। \n
target: "es2016",module: "commonjs",strict: trueऔर अन्य उचित मान सेट करता है। \n - बाकी सभी विकल्पों को कमेंट कर देता है, ताकि डेवलपर ज़रूरत पड़ने पर उन्हें अनकमेंट कर सके। \n
लेकिन क्या होगा यदि आप जनरेशन को कस्टमाइज़ करना चाहते हैं? उदाहरण के लिए, तुरंत स्ट्रिक्ट मोड चालू करना या आउटपुट फ़ाइलों के लिए पथ सेट करना? इसके लिए आप अपनी स्क्रिप्ट लिख सकते हैं।
\n\n2.1. उदाहरण: TypeScript पर अपना tsconfig.json जनरेटर
\n\nकल्पना करें कि आप प्रोजेक्ट्स को स्वचालित रूप से कॉन्फ़िगर करने के लिए एक टूल लिख रहे हैं। यहाँ एक फ़ंक्शन दिया गया है जो हुड के नीचे tsconfig.json जनरेट करता है:
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