مولد package.json

package.json
التالي

بدلاً من تشغيل برنامج npm init والإجابة عن أحد عشر سؤالاً، يكفيكم ملء نموذج للحصول على ملف package.json منظم وذو هيكل صحيح. يغطي هذا المولّد جميع الحقول الضرورية (الاسم، الإصدار)، بالإضافة إلى الحقول الشائعة الاستخدام (السكريبتات، المعتمادات، المعتمادات الخاصة بالتطوير، المحركات)، وكذلك التفاصيل المهمة مثل المستودع، الأخطاء، الكلمات المفتاحية، والرخصة، وهي العناصر التي تجعل الحزمة قابلة لاكتشافها ونشرها بسهولة.

كيفية إنشاء ملف package.json الخاص بك

  1. 1

    أدخل الاسم والإصدار

    يتم تسمية الملف وفقًا لقواعد npm: باستخدام أحرف صغيرة، وضمان توافقه مع عناوين URL، وبطول أقل من 214 حرفًا. أما الإصدار فيكون على شكل semver (مثلاً: 0.1.0).

  2. 2

    اختر نوع الوحدة

    CommonJS (القيمة الافتراضية) أو ESM عبر نوع: "module". ينطبق على مشاريع Node.js الإصدار 14 فما فوق.

  3. 3

    أضف النصوص إلى السكريبتات

    البدء، البناء، الاختبار، ومعالجة الأخطاء، تُنفَّذ هذه الأوامر باستخدام `npm run <name>`.

  4. 4

    إدراج قائمة المعتمدات

    حزم التشغيل ضمن المتطلبات، والأدوات ضمن متطلبات التطوير.

  5. 5

    إدخال بيانات الميتا

    الوصف، المؤلف، الترخيص، عنوان موقع المستودع، الكلمات المفتاحية.

  6. 6

    قم بنسخ الناتج.

    قم بلصق المحتوى في ملف package.json الجديد الموجود في الجذر المشروعي.

الحقول التي تهم أكثر من غيرها

الحقل إلزامي؟ ملاحظات
name نعم أحرف صغيرة، من 1 إلى 214 حرفًا، ملائم للعناوين الإلكترونية (URL)
version نعم Semver (الإصدار الرئيسي/الفرعي/التحديث)
type لا “module” لـ ESM؛ يُغفل عند استخدام CommonJS
main موصى به نقطة دخول لـ CommonJS (index.js)
exports موصى به خريطة تصدير حديثة للنظام المزدوج CJS/ESM
scripts يُوصى به بشدة أوامر npm run <name>
dependencies حسب الحاجة حزم تشغيل البرنامج
devDependencies حسب الحاجة أدوات بناء البرمجيات، أدوات اختبار، أدوات فحص الأكواد
engines مفيد جدًا نطاق إصدارات العقدة المطلوبة
license نعم للنشر معرّف SPDX مثل MIT، Apache-2.0

قائمة معلومات سريعة حول برنامج Semver

  • 1.0.0، major.minor.patch
  • ^1.0.0 – متوافق مع الإصدار 1.x.x (≥ 1.0.0، < 2.0.0)
  • ~1.0.0 – تحديثات للبلاكات فقط (≥ 1.0.0، < 1.1.0)
  • >=1.0.0 <2.0.0، النطاق الواضح
  • 1.0.0-beta.1، prerelease
  • latest، علامة npm، وليس إصدارًا

القيمة الافتراضية عند تشغيل npm install package هي ^، مما يسمح بتحديثات دون انقطاع في التدفق.

النماذج النصية القياسية التي يجب امتلاكها

{
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js",
    "build": "tsc",
    "test": "vitest",
    "lint": "eslint .",
    "format": "prettier --write ."
  }
}

المفاهيم الخاطئة في عملية التسمية

  • لا أحرف كبيرة. يفشل MyPackage في تنفيذ npm install.
  • لا تستخدم فواصل؛ استخدم علامات الاقتران: my-package.
  • تبدأ أسماء النطاقات (Scoped names) بـ @org/ بالنسبة لمنظمات GitHub أو npm: مثل @acme/utils.
  • الكلمات المحجوزة: لا يمكن استخدام node_modules وfavicon.ico وcore وexpress كأسماء للحزم.

خيارات الترخيص

اختر معرّف SPDX معتمدًا:

  • MIT، الخيار الشائع والأكثر تسامحًا.
  • Apache-2.0، نظام مفتوح يشترط منح براءة اختراع.
  • ISC، ترخيص قصير جدًا يشبه ترخيص MIT، وهو الترخيص الافتراضي في npm.
  • GPL-3.0 أو إصدارات لاحقة – حقوق مفتوحة (copyleft).
  • UNLICENSED، حزمة خاصة، غير مخصصة للتوزيع.

تؤدي سلاسل الترخيص الخاطئة أو الغامضة إلى ظهور تحذيرات عند نشر الملف على npm.

الأسئلة الشائعة

تُثبَّت المعتمدات عندما يُجرِي أحد المستخدمين برنامج npm install ضمن مشروع يستخدم مكوناتك. أما المعتمدات التطويرية (devDependencies) فتُثبَّت فقط في بيئة التطوير الخاصة بالحزمة. قم بإدراج حزم التشغيل ضمن المعتمدات، وأدوات الاختبار والبناء ضمن المعتمدات التطويرية.

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

فقط إذا كنت ترغب في أن يكون الحزمة باستخدام صيغة ESM (للتخصيصات المتعلقة بالاستيراد/التصدير) بشكل افتراضي؛ وإلا فإن ملفات .js تُعامل كملفات CommonJS. كما يمكنك استخدام الملفات بامتداد .mjs للملفات من نوع ESM أو بامتداد .cjs للملفات من نوع CommonJS، بغض النظر عن نوعها.

إصدارات العقد التي تم اختبار الكود بناءً عليها؛ ومن بين الخيارات الشائعة حاليًا إصدار "engines": {"node": ">=18"}. هذا إشعار تحذيري وليس خطأًا، لكن الأدوات تلتزم به والمستخدمون يُثبّتونه بشكل صحيح.

أدوات ذات صلة

الأداة متاحة بلغات أخرى