كيفية بناء أداة CLI في NodeJS

باستخدام Herku’s Oclif framework

الصورة من قبل ماركوس سبيس على Unsplash

كمطورين ، نحن نعيش مع أدوات CLI. من git إلى cloud clouds - نحن نستخدم هذه الأدوات في كل مكان. لذلك ، فقد حان الوقت لجعل الخاصة بك. سوف نستخدم إطار oclif الكبير في Heroku في هذه العملية.

ما هو oclif؟

إنه إطار مفتوح لإنشاء أدوات CLI بسرعة ، ويتم توفيرها بواسطة Heroku المعروفة.

ما الذي سيتم بناؤه؟

سنقوم بتنفيذ أمر قائمة المهام التي يمكن أن تتضمن أربعة إجراءات:

  • أضف مهمة جديدة
  • عرض جميع المهام
  • تحديث المهمة
  • إزالة مهمة

تهيئة مشروعنا

يمكن لـ Oclif إنشاء نوعين من المشاريع -

  1. المشاريع التي لديها أمر واحد.
  2. المشاريع التي قد تحتوي على أوامر متعددة ، بما في ذلك الأوامر المتداخلة.

في هذه المقالة ، سنحتاج إلى مشروع أوامر متعددة ، لذلك فلننشئه:

npx oclif multi todocli

يؤدي تشغيل هذا الأمر واتباع الإرشادات إلى تهيئة مشروع جديد يسمى todocli داخل الدليل الحالي.

الآن ، دعنا نذهب داخل الدليل وتشغيل المساعدة:

cd todocli &&. /bin/run - help

هذا سوف يطبع النتائج أدناه:

> الاستخدام
    todocli $ [COMMAND]
  COMMANDS
    مرحبا
    مساعدة عرض مساعدة ل todocli

هذا يدل على الأوامر المتاحة ووثائقها.

هيكل المشروع

داخل src directory يمكننا إيجاد دليل باسم الأوامر. يحتفظ هذا الدليل بجميع الأوامر مع أسماء الملفات النسبية. على سبيل المثال ، إذا كان لدينا أمر مرحبا ، فسنحصل على ملف باسم hello.js داخل هذا الدليل وسيعمل الأمر بدون أي إعداد إضافي. دعنا نزيل hello.js لأننا لسنا في حاجة إليها.

إعداد قاعدة البيانات

لتخزين مهامنا نحتاج إلى نظام تخزين. للبساطة ، سوف نستخدم lowdb وهو نظام بسيط لتخزين ملفات json. حلو لهذا المشروع

لنقم بتثبيته:

npm تثبيت lowdb - حفظ

لنقم بإنشاء ملف db.json داخل دليل جذر المشروع. هذا الملف سوف يحتفظ ببياناتنا. ثم نحن بحاجة إلى تثبيت lowdb. الآن ، سنقوم بإنشاء ملف يسمى db.js داخل دليل src. هذا الملف سوف يعقد الاشياء قاعدة البيانات الخاصة بنا.

هنا ، نقوم ببساطة بتحميل المكتبة والملف المطلوب في البداية ، ثم تحديد صفيف todos فارغ كمجموعة أساسية لدينا (مثل جدول إذا كنت تفكر مثل قواعد بيانات SQL).

إضافة المهام

يوفر لنا oclif وظيفة إنشاء أوامر على نحو سلس. لنقم بتشغيل ما يلي:

قيادة oclif إضافة

سيؤدي ذلك إلى إنشاء ملف باسم add.js داخل دليل أوامر src /. دعنا نستبدل محتوى هذا الملف بالرمز أدناه:

يحتوي الملف على بعض المكونات الأساسية:

  • وظيفة التشغيل التي تنفذ الوظيفة الرئيسية لهذا الأمر ،
  • وصف ، تلك هي وثائق الأمر ، و
  • العلامات ، التي تصف العلامات التي تم تمريرها إلى الأمر.

هنا ، لدينا مهمة باسم العلم والتي لديها نوع سلسلة. يمكننا تشغيل الأمر

./bin/run add --task = "مهمة الترحيب"

سيضيف هذا الأمر مهمة إلى قاعدة البيانات الخاصة بنا وطباعة استجابة تلك العملية.

عرض المهام

هنا بداخل show.js ، نعرض جميع المهام بترتيب تصاعدي. لقد أضفنا القليل من اللون مع الطباشير لإعطاء نتائج قيادتنا نظرة أفضل.

تحديث المهام

للبساطة ، نحن الآن فقط نقوم بتعيين المهام كما هو الحال بالنسبة لجزء التحديث. لقد مررنا للتو معرف المهمة كعلم.

./bin/run update --id = 1

سيؤدي هذا إلى تعيين تم التنفيذ = صواب للمهمة ذات المعرف = 1.

إزالة المهام

الإزالة واضحة ومباشرة: نمرر المعرف كعلم ، ثم نزيل المهمة ذات الصلة من قاعدة البيانات الخاصة بنا.

يكاد ينتهي!

ومثل هذا ، لقد جعلنا لدينا todocli بسيط جدا. الآن إذا كنا نرغب في استخدامه مثل أي أداة CLI عادية أخرى أو السماح لأصدقائنا باستخدامها ، فنحن بحاجة إلى جعلها حزمة npm. لذلك دعونا ننشرها على npm.

بناء ونشر ل npm

بادئ ذي بدء ، تأكد من أن لديك حساب npm. ثم تحتاج إلى تسجيل الدخول تشغيل الأمر

npm تسجيل الدخول

ثم داخل تشغيل دليل المشروع

تشغيل npm prepack

سيؤدي ذلك إلى تحزيم المشروع وجعله جاهزًا للأداة npm مع ملف تمهيدي تم إنشاؤه من الأوصاف والأعلام.

الآن ، انشرها على npm:

npm نشر

إذا سارت الأمور على ما يرام ، فقد تم نشر الوحدة على npm بنجاح. إذا لم ينجح ذلك ، فتحقق من اسم المشروع وإصداره.

الآن ، يمكننا استخدامه مثل أي أداة npm أخرى مع التثبيت العام:

تثبيت npm -g todocli

وبعد ذلك يمكن لأي شخص استخدام هذه الأوامر في أي وقت ، في أي مكان تقريبًا

> todocli add --task = "مهمة عظيمة !!!"
> عرض تودوكلي
> تحديث todocli - معرف = 1
> todocli إزالة - معرف = 1

إذا جئت إلى هذا الحد بعد المقالة بأكملها ، فتهانينا ، أنت رائعة. الآن ، يمكنك القيام بمهمة صغيرة:

مهمة

معرف تعيين المهام ليس صحيحًا ، هل يمكنك إصلاحه؟ اسمحوا لي أن أعرف كيف يمكنك حلها في قسم الاستجابة.

حظا سعيدا والشكر للقراءة :)

oclif: https://oclif.io

lowdb: https://github.com/typicode/lowdb

الطباشير: https://github.com/chalk/chalk

تودوكلي: https://www.npmjs.com/package/todocli-frombd

اقرأ المزيد من مقالاتي -