TypeScript CLI-उपयोगिताओं के लिए आदर्श भाषा क्यों है?
\nयदि आप Python में लिखते हैं और अचानक एक कंसोल उपयोगिता बनाने के बारे में सोचते हैं, तो संभवतः आपका पहला विचार argparse या click लेना होगा। और यह तर्कसंगत है। लेकिन क्या होगा अगर मैं आपसे कहूँ कि TypeScript CLI की दुनिया में किसी भी Python उपकरण को टक्कर दे सकता है? हाँ, आपने सही सुना।
TypeScript केवल "टाइप्स के साथ JavaScript" नहीं है। यह एक ऐसी भाषा है जो CLI-उपयोगिताओं के विकास को एक पूर्वानुमानित और सुरक्षित प्रक्रिया में बदल देती है। अब और नहीं "मेरे पास स्ट्रिंग के बजाय undefined क्यों है?" या "मैंने एक संख्या दी, लेकिन वह स्ट्रिंग बन गई"। सख्त टाइपिंग संकलन चरण में ही त्रुटियों की एक पूरी श्रेणी को काट देती है।
लेकिन मुख्य लाभ पारिस्थितिकी तंत्र है। Node.js आपको TypeScript कोड को कहीं भी चलाने की अनुमति देता है: सर्वर पर, Docker में, Raspberry Pi पर। और npm उपयोगिता के प्रकाशन को पाँच मिनट का काम बना देता है। आज हम पूरी यात्रा करेंगे: एक खाली फ़ोल्डर से लेकर एक तैयार CLI-उपयोगिता तक, जिसे npm install -g कमांड से स्थापित किया जा सकता है।
हम क्या बनाएँगे?
\nकल्पना करें: आप अक्सर JSON फ़ाइलों के साथ काम करते हैं और आपको जल्दी से फ़ील्ड की संख्या गिनने, वैधता की जाँच करने या CSV में बदलने की आवश्यकता होती है। हम एक उपयोगिता json-toolkit लिखेंगे जो तीन काम करती है:
- \n
- validate — JSON की वैधता की जाँच करता है; \n
- count — शीर्ष स्तर की कुंजियों की संख्या गिनता है; \n
- to-csv — ऑब्जेक्ट्स की सरणी को CSV में बदलता है। \n
सरल लगता है? हाँ। लेकिन इस उदाहरण पर आप सभी प्रमुख तकनीकों में महारत हासिल करेंगे: तर्कों को संसाधित करना, फ़ाइल सिस्टम के साथ काम करना, टर्मिनल में रंग और त्रुटियों को संभालना।
\n\nचरण 1. प्रोजेक्ट सेटअप
\nसबसे पहले एक फ़ोल्डर बनाएँ और प्रोजेक्ट को आरंभ करें:
\nmkdir json-toolkit\ncd json-toolkit\nnpm init -y\nअब TypeScript और आवश्यक पैकेज स्थापित करें:
\nnpm install -D typescript @types/node\nnpm install commander chalk\n- \n
commander— कमांड लाइन तर्कों को पार्स करने के लिए लाइब्रेरी (Python-argparse का एनालॉग, लेकिन अधिक सुविधाजनक); \n chalk— टर्मिनल में आउटपुट को रंग देता है; \n @types/node— Node.js के लिए प्रकार। \n
tsconfig.json बनाएँ:
{\n "compilerOptions": {\n "target": "ES2020",\n "module": "commonjs",\n "outDir": "./dist",\n "rootDir": "./src",\n "strict": true,\n "esModuleInterop": true,\n "declaration": true\n },\n "include": ["src/**/*"]\n}\nध्यान दें: outDir वह फ़ोल्डर है जहाँ कोड संकलित होगा, और rootDir स्रोत फ़ाइलें हैं। यह TypeScript प्रोजेक्ट्स के लिए मानक अभ्यास है।
चरण 2. उपयोगिता का मुख्य भाग लिखना
\nsrc फ़ोल्डर और फ़ाइल src/index.ts बनाएँ। आयात और commander सेटअप से शुरू करें:
import { Command } from 'commander';\nimport { readFileSync, existsSync } from 'fs';\nimport chalk from 'chalk';\n\nconst program = new Command();\n\nprogram\n .name('json-toolkit')\n .description('JSON फ़ाइलों के साथ काम करने के लिए उपयोगिता')\n .version('1.0.0');\n\nprogram\n .command('validate')\n .argument('<file>', 'JSON फ़ाइल का पथ')\n .description('JSON की वैधता जाँचें')\n .action((file: string) => {\n try {\n const content = readFileSync(file, 'utf-8');\n JSON.parse(content);\n console.log(chalk.green('✓ JSON मान्य है!'));\n } catch (err) {\n console.error(chalk.red('✗ त्रुटि:'), (err as Error).message);\n }\n });\n\nprogram\n .command('count')\n .argument('<file>', 'JSON फ़ाइल का पथ')\n .description('शीर्ष स्तर की कुंजियों की संख्या गिनें')\n .action((file: string) => {\n if (!existsSync(file)) {\n console.error(chalk.red('फ़ाइल नहीं मिली!'));\n return;\n }\n const content = readFileSync(file, 'utf-8');\n const data = JSON.parse(content);\n const keys = Object