افحص ملف package.json كما يقرؤه npm: الاسم والإصدار والترخيص والاعتماديات والصياغة
يعمل في متصفحك. لا يُرسل أي شيء تكتبه إلى أي مكان. تم التحقق في 16 أكتوبر 2026.يفحص مدقق package.json الملف الذي يقرؤه npm قبل تثبيت حزمة أو نشرها. الصق الملف لترى أخطاء صياغة JSON مع سطرها، والتحذيرات الدقيقة التي يطبعها npm، وما إذا كان الاسم مسموحًا، وما إذا كان الترخيص أحد معرّفات SPDX البالغ عددها 734، وإصدارات الاعتماديات التي ليست نطاقات حقيقية.
تُرجمت هذه الصفحة آليًا من الأصل الإنجليزي. لم يراجع أي شخص هذه الترجمة بعد، لذا فالنسخة الإنجليزية هي التي يُعتمد عليها. اقرأ الأصل الإنجليزي
الصق ملف package.json، أو افتح الملف، أو انقر على جرّب مثالًا.
أصلح أي خطأ في صياغة JSON أولًا: يظهر سطره وعموده مع السبب المعتاد.
اقرأ ما يقوله npm: التحذيرات والأخطاء التي يطبعها npm نفسه لهذا الملف، حرفيًا.
راجع الفحوص الإضافية، مثل الاعتماديات دون إصدار مثبّت، وانقر على نسخ التقرير لمشاركتها.
يقرأ npm ملف package.json بصرامة في مواضع وبتساهل في أخرى: الإصدار الخاطئ يوقف كل شيء، بينما الوصف المفقود لا يجلب إلا تحذيرًا. تفحص هذه الصفحة الملف على ثلاث طبقات وتعرض كلًّا منها على حدة.
1. صياغة JSON. يظهر الخطأ الأول مع سطره وعموده والسبب المعتاد: فاصلة زائدة في النهاية، أو تعليق، أو علامات اقتباس مفردة، أو مفتاح دون علامات اقتباس. وتُسرد المفاتيح المكررة أيضًا، لأن JSON.parse يحتفظ بصمت بآخرها فقط وتضيع القيمة الأولى.
2. ما يقوله npm. التحذيرات والأخطاء التي يطبعها npm نفسه لهذا الملف، حرفيًا، مثل "No repository field." أو "Invalid version". وهي مأخوذة من إعادة كتابة وحدات npm نفسها normalize-package-data وvalidate-npm-package-name وvalidate-npm-package-license، وتقارن الاختبارات الإجابات بتلك الحزم على 80 ملف عيّنة و44 اسمًا و54 نص ترخيص.
| رسالة npm | ما العمل |
|---|---|
| Invalid version: "1.0" | اكتب ثلاثة أرقام، مثل 1.0.0 |
| No license field. | أضف "license": "MIT" أو معرّف SPDX آخر |
| license should be a valid SPDX license expression | استخدم المعرّف الدقيق، مثل Apache-2.0 |
| scripts['server'] should probably be scripts['start']. | أعد تسمية السكربت إلى start |
| name can no longer contain capital letters | استخدم أحرفًا صغيرة لحزمة جديدة |
3. فحوص إضافية. اعتماديات مكتوبة على شكل * أو latest أو نص فارغ؛ ونطاقات إصدارات غير صالحة، تُفحص بقواعد npm نفسها؛ وحزمة مدرجة في dependencies وdevDependencies معًا؛ واعتماديات git دون وسم؛ ومسارات محلية في حزمة منشورة؛ وقيمة "type" غير module أو commonjs؛ ونطاقات engines؛ وسكربت الاختبار المؤقت الذي يتركه npm init.
الملف الموسوم بـ "private": true لا يُنشر أبدًا، لذا لا يعرض npm تحذيراته؛ وتذكر الصفحة ذلك. كل شيء يعمل في متصفحك؛ ولا يُرسل أي شيء تلصقه إلى أي مكان.
يجب أن يكون حقل license معرّف SPDX دقيقًا، مثل MIT أو ISC أو Apache-2.0، أو تركيبة مثل (MIT OR Apache-2.0). الصيغ القريبة مثل "mit" أو "Apache 2.0" أو "BSD" تفشل. للشيفرة المغلقة اكتب UNLICENSED، أو SEE LICENSE IN LICENSE.txt للإشارة إلى ملفك الخاص.
ليس في حزمة جديدة. يجب أن تكون الأسماء بأحرف صغيرة، وألا تتجاوز 214 حرفًا، وأن تكون آمنة للاستخدام في URL، وألا تبدأ بنقطة أو شرطة سفلية، وألا تكون وحدة أساسية في Node.js مثل http. لبعض الحزم القديمة أحرف كبيرة لأن القواعد جاءت لاحقًا، وما زال npm يثبّتها، لكنه يرفض حزمة جديدة كهذه.
يجب أن يكون الإصدار إصدارًا دلاليًا كاملًا من ثلاثة أرقام، مثل 1.0.0 أو 2.1.0-beta.1. كتابة 1.0 أو latest أو نص فارغ تمنع npm من قراءة الحزمة أصلًا. يقبل npm حرف v في البداية ويزيله، فيُقرأ v1.2.3 على أنه 1.2.3.
في الغالب نعم. كلاهما يقبل أي إصدار، فقد يحصل تثبيتان يفصل بينهما شهر على إصدارين رئيسيين مختلفين فيهما تغييرات غير متوافقة. اكتب نطاقًا بعلامة ^ مثل ^4.17.21، يقبل الإصلاحات والميزات لكنه يتوقف قبل الإصدار الرئيسي التالي، وأضف ملف القفل (lock) إلى المستودع حتى تتطابق كل التثبيتات.
لا. ملف package.json هو JSON صارم لا يعرف التعليقات، لذا فإن سطرًا فيه // أو /* يمنع npm من قراءة الملف. من الحلول الشائعة مفتاح باسم "//" قيمته نص؛ إذ يتجاهل npm المفاتيح التي لا يعرفها. ويشير فحص الصياغة في هذه الصفحة إلى سطر التعليق.
يحذّر npm حين لا يحتوي package.json على repository، لأن موقع npm يربط منه بالشيفرة المصدرية. أضف "repository": {"type": "git", "url": "git+https://github.com/user/repo.git"}. لا يوقف التحذير أي شيء، ويتخطاه npm تمامًا في الحزمة الموسومة بـ "private": true.
تتغير المعدلات والقواعد؛ راجع المصدر قبل الاعتماد على أي رقم.
هل ما زلت عالقًا؟ اسأل عن مدقق package.json ويمكن لأي شخص يعرف الإجابة أن يجيب. لا حاجة إلى حساب.