Kodokon kodokon.com

وحدات ES وnpm: تنظيم مشروعك

تنظّم مشروع Node باستخدام package.json ووحدات ES وتبعيات npm والسكربتات.

9 دقيقة · 3 أسئلة

افتح هذا الدرس في Kodokon

لا يتّسع مشروع حقيقي في ملف واحد: بل تقسّمه إلى وحدات (modules)، وهي ملفات تصدّر (export) ما تقدّمه وتستورد (import) ما تحتاجه. أنت تعرف بالفعل صياغة import / export من مسار JavaScript؛ لنرَ كيف تتيحها Node. يبدأ كل شيء من package.json، بطاقة هوية مشروعك: وهو ملف بتنسيق JSON يصف اسمه ونسخته وإعداداته. ولإنشائه، انتقل إلى مجلد فارغ ونفّذ npm init -y (يقبل الخيار -y جميع الإجابات الافتراضية). ثم أضف السطر "type": "module": فهو يخبر Node بأن ملفات .js لديك تستخدم وحدات ES.

JSON
{
  "name": "my-project",
  "version": "1.0.0",
  "type": "module",
  "scripts": {
    "start": "node main.js",
    "dev": "node --watch main.js"
  }
}
ملف package.json الخاص بك بعد npm init -y، مُكمَّلًا بسطر type وبسكربتين سنستخدمهما أدناه.

لننشئ ملفين في هذا المجلد: يصدّر math.js دالة، ويستوردها main.js. تفصيل خاص بـ Node: يجب أن يبدأ استيراد ملف محلي بـ ./ وأن ينتهي بالامتداد .js. وكلاهما مطلوب، على عكس ما تتسامح معه بعض أدوات الويب.

JAVASCRIPT
// math.js
export function add(a, b) {
  return a + b;
}

// main.js
import { add } from "./math.js";

console.log(add(2, 3));
ملفان منفصلان. نفّذ node main.js: تظهر النتيجة 5.

تكمن قوة npm الكبرى في مكتبتها العالمية من الحزم (packages): كود كتبه آخرون، جاهز للاستخدام. ينزّل الأمر npm install حزمة إلى مجلد node_modules الخاص بمشروعك ويضيفها إلى قسم dependencies في package.json: وهو قائمة الحزم التي يحتاجها مشروعك ليعمل. ويسجّل ملف package-lock.json، المُنشأ تلقائيًا، النسخ المُثبَّتة بدقة، بحيث يحصل الجميع على الشيء نفسه. لنجرّب مع chalk، وهي حزمة تلوّن النص المعروض في الطرفية.

BASH
npm install chalk
بعد هذا الأمر، يظهر chalk في dependencies وفي node_modules؛ يمكنك عندئذٍ استيراده مثل أي وحدة.

ركيزة أخيرة: سكربتات npm، وهي اختصارات أوامر مُعلَنة في قسم scripts من package.json. ينفّذ npm run dev الأمر المحفوظ تحت الاسم dev، مهما طال الأمر الحقيقي. يستخدم سكربت dev لدينا node --watch، وهو خيار يعيد تشغيل البرنامج تلقائيًا في كل مرة يتغير فيها ملف: مريح جدًا أثناء التطوير.

BASH
npm run start
npm run dev
ينفّذ كل أمر السكربت الذي يحمل الاسم نفسه. أوقف وضع المراقبة بـ Ctrl+C.

اختبار المعرفة

تأكّد من أنك تذكّرت النقاط الأساسية في هذا الدرس.

  1. ما دور ملف package.json؟
    • وصف المشروع: الاسم والنسخة والسكربتات والتبعيات
    • احتواء كود JavaScript الرئيسي للمشروع
    • تخزين كود الحزم المُنزَّلة
    • استبدال مجلد node_modules
  2. ماذا يحدث عندما تنفّذ npm install chalk؟
    • يُنسخ chalk مباشرة إلى ملف main.js الخاص بك
    • يُنزَّل chalk فقط، دون أن يترك أثرًا
    • يوضَع chalk في node_modules ويُضاف إلى dependencies
  3. لماذا نضيف سطر type module في package.json؟
    • لكي يثبّت npm الحزم بشكل أسرع
    • لكي تقرأ Node ملفات .js كوحدات ES (import/export)
    • لنشر المشروع على npm تلقائيًا