TypeScript में CLI एप्लिकेशन बनाना: फ्रेमवर्क और टूल्स का अवलोकन

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

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

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

TypeScript के लिए CLI फ्रेमवर्क: शक्तिशाली कंसोल एप्लिकेशन बनाएँ



TypeScript में कमांड-लाइन इंटरफेस (CLI) का विकास केवल आर्गुमेंट पार्सर लिखना नहीं है। आधुनिक CLI-एप्लिकेशन इंटरैक्टिव, रंगीन, ऑटो-कम्प्लीशन का समर्थन करने वाले और यहाँ तक कि एनिमेटेड ग्राफ़ प्रदर्शित करने वाले हो सकते हैं। इसके लिए विशेष फ्रेमवर्क और लाइब्रेरी मौजूद हैं। इस लेख में, हम TypeScript पर CLI बनाने के लिए चार प्रमुख टूल्स पर चर्चा करेंगे: Commander.js, Ink, Oclif और Yargs। आप उनकी ताकत जानेंगे, तैयार कोड उदाहरण प्राप्त करेंगे और समझेंगे कि आपके कार्य के लिए कौन सा टूल उपयुक्त है।



1. Commander.js — क्लासिक और सरलता



Commander.js Node.js और TypeScript पर CLI बनाने के लिए सबसे लोकप्रिय फ्रेमवर्क है। यह कमांड, आर्गुमेंट और विकल्पों का वर्णन करने के लिए एक डिक्लेरेटिव API प्रदान करता है। TypeScript के अंतर्निहित समर्थन के कारण, आपको ऑटो-कम्प्लीशन और टाइप चेकिंग मिलती है।



मुख्य विशेषताएँ:

  • स्वचालित सहायता पीढ़ी (--help)।
  • नेस्टेड कमांड (उप-कमांड) के लिए समर्थन।
  • अनिवार्य आर्गुमेंट का सत्यापन।
  • विकल्पों की लचीली प्रणाली: बूलियन, स्ट्रिंग, डिफ़ॉल्ट मानों के साथ।


Commander.js + TypeScript पर एक सरल CLI का उदाहरण:

import { Command } from 'commander';

const program = new Command();

program .name('greet') .description('अभिवादन के लिए CLI') .version('1.0.0');

program .command('hello') .argument('<name>', 'उपयोगकर्ता का नाम') .option('-l, --lang <language>', 'अभिवादन की भाषा', 'hi') .action((name, options) => { if (options.lang === 'en') { console.log(`Hello, ${name}!`); } else { console.log(`नमस्ते, ${name}!`); } });

program.parse(process.argv);


Commander.js सरल उपयोगिताओं और ऑटोमेशन स्क्रिप्ट के लिए आदर्श है। यह अनावश्यक निर्भरताओं से भरा नहीं है और अच्छी तरह से प्रलेखित है।



2. Ink — कंपोनेंट्स के साथ रिएक्टिव CLI



Ink एक अनोखा फ्रेमवर्क है जो आपको React-जैसे कंपोनेंट्स का उपयोग करके CLI इंटरफेस बनाने की अनुमति देता है। आप JSX में लिखते हैं, और Ink इसे टर्मिनल में रेंडर करता है। TypeScript के साथ संयोजन में, आपको कंपोनेंट्स की सख्त टाइपिंग मिलती है।



मुख्य विशेषताएँ:

  • कंपोनेंट-आधारित दृष्टिकोण: <Text>, <Box>, <Spacer>।
  • स्थिति बदलने पर स्वचालित अपडेट (रिएक्टिविटी)।
  • एनिमेशन, लोडिंग इंडिकेटर, प्रोग्रेस बार के लिए समर्थन।
  • React हुक्स के साथ गहन एकीकरण (useInput, useApp)।


Ink के साथ इंटरैक्टिव CLI का उदाहरण:

import React, { useState } from 'react';import { render, Text, Box, useInput } from 'ink';

const Counter = () => { const [count, setCount] = useState(0);

useInput((input) => { if (input === '+') setCount(prev => prev + 1); if (input === '-') setCount(prev => prev - 1); });

return ( <Box> <Text>काउंटर: {count}. '+' या '-' दबाएँ</Text> </Box> );};

render(<Counter />);


Ink जटिल इंटरैक्टिव उपयोगिताओं, इंस्टॉलेशन विज़ार्ड, टर्मिनल डैशबोर्ड के लिए उपयुक्त है। यदि आपको एक सुंदर और उत्तरदायी इंटरफ़ेस चाहिए तो यह सबसे अच्छा विकल्प है।



3. Oclif — स्केलेबल CLI के लिए फ्रेमवर्क



Heroku का Oclif (Open CLI Framework) किसी भी जटिलता के CLI एप्लिकेशन बनाने के लिए एक पूर्ण फ्रेमवर्क है। यह प्लगइन्स, स्वचालित अपडेट, हुक्स और प्रोजेक्ट जनरेशन का समर्थन करता है।



मजबूत पक्ष:

  • अंतर्निहित कोड जनरेटर (oclif generate)।
  • बॉक्स से बाहर TypeScript समर्थन।
  • कार्यक्षमता बढ़ाने के लिए प्लगइन प्रणाली।
  • npm के माध्यम से CLI का स्वचालित अपडेट।


उदा

अनुशंसाएँ