أطر CLI لـ TypeScript: مراجعة شاملة وأمثلة الاستخدام

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

أطر CLI لـ TypeScript: إنشاء تطبيقات وحدة تحكم قوية



التطوير الحديث باستخدام TypeScript لا يمكن تصوره بدون إنشاء أدوات سطر الأوامر (CLI). سواء كان أداة تجميع مشاريع، أو مولد كود، أو أداة للأتمتة - كل مطور فكر مرة واحدة على الأقل في كتابة برنامج وحدة تحكم خاص به. في هذه المقالة، سنستعرض بالتفصيل أفضل أطر CLI لـ TypeScript، وميزاتها، وسنقدم أمثلة عملية للكود.



لماذا نحتاج إلى إطار CLI؟



كتابة CLI "من الصفر" لا تقتصر فقط على معالجة وسائط سطر الأوامر، بل تشمل أيضًا إدارة الأوامر الفرعية، والتحقق من صحة الإدخال، والإخراج الملون، والتلميحات التفاعلية. الإطار يتحمل المهام الروتينية، مما يسمح لك بالتركيز على منطق الأعمال. TypeScript يضيف كتابة صارمة، وهو أمر قيم بشكل خاص عند تطوير تطبيقات وحدة تحكم معقدة.



أفضل 4 أطر CLI لـ TypeScript



1. Commander.js



الإطار الأكثر شعبية (أكثر من 30 مليون تحميل في الأسبوع). مثالي لإنشاء CLI معقدة متعددة المستويات مع أوامر فرعية، وخيارات، وتوليد تلقائي للمساعدة.



التثبيت:

npm install commander


مثال لتطبيق أساسي:

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 <lang>', 'لغة التحية', 'ru') .action((name, options) => { const greetings: Record<string, string> = { ru: 'مرحباً', en: 'Hello', de: 'Hallo' }; const greeting = greetings[options.lang] || greetings.ru; console.log(`${greeting}, ${name}!`); });

program.parse();


التشغيل:

npx ts-node index.ts hello إيفان --lang en# الإخراج: Hello, إيفان!


2. Inquirer.js



مكتبة لإنشاء تلميحات تفاعلية في الطرفية. تتيح طرح الأسئلة، واختيار الخيارات، وإدخال كلمات المرور، وأكثر من ذلك بكثير. تتكامل بشكل ممتاز مع Commander.



التثبيت:

npm install inquirer @types/inquirer


مثال لاستطلاع تفاعلي:

import inquirer from 'inquirer';

interface Answers { name: string; role: string; experience: number;}

async function main() { const answers: Answers = await inquirer.prompt([ { type: 'input', name: 'name', message: 'ما اسمك؟', validate: (input: string) => input.length > 0 || 'الاسم لا يمكن أن يكون فارغاً' }, { type: 'list', name: 'role', message: 'ما هو دورك؟', choices: ['Frontend', 'Backend', 'Fullstack', 'DevOps'] }, { type: 'number', name: 'experience', message: 'سنوات الخبرة؟', default: 1 } ]);

console.log(`✅ ${answers.name}، أنت ${answers.role} بخبرة ${answers.experience} سنوات.`);}

main();


3. Clack



إطار حديث من مبتكري Astro. يتميز بواجهة برمجة تطبيقات بسيطة، ورسوم متحركة جميلة، ودعم TypeScript "مباشر من الصندوق". مثالي للنمذجة السريعة.



التثبيت:

npm install @clack/prompts


مثال مع اختيار اللون:

import * as clack from '@clack/prompts';

async function main() { clack.intro('اختيار اللون');

const color = await clack.select({ message: 'اختر لونك المفضل:', options: [ { value: 'red', label: 'أحمر' }, { value: 'green', label: 'أخضر' }, { value: 'blue', label: 'أزرق' } ] });

clack.note(`لقد اخترت: ${color}`); clack.outro('شكراً لاختيارك!');}

main();


4. Yargs



محلل وسائط قوي

توصيات