Cli: [BUG] تكتمل "حزمة npm" بنجاح حتى في حالة عدم وجود "main" في الحزمة

تم إنشاؤها على ١٥ مايو ٢٠٢٠  ·  3تعليقات  ·  مصدر: npm/cli

ماذا / لماذا

اكتشفنا ذلك عندما قامت إحدى الحزم الداخلية لشركتنا ببعض إعادة البناء ونقل نقطة الدخول إلى مكان آخر في المستودع دون تذكر تحديث main في package.json. كانت النتيجة النهائية أن npm pack أنشأ بسعادة وسمح بنشر حزمة ليس لديها فرصة للعمل بشكل صحيح.

متي

عند تشغيل npm pack وبالتالي عند تشغيل npm publish

أين

كيف

السلوك الحالي

npm pack لا تحقق من أن main موجود في كتل القطران مما يجعل من السهل إلى حد ما خلق ونشر الحزم التي لا يمكن استخدامها من قبل المستهلكين.

خطوات التكاثر

  • قم بإنشاء دليل فارغ
  • npm init وتخطى خطوات إنشاء كل شيء بالقيم الافتراضية. ستحصل على package.json مثل هذا
{
  "name": "npm-repro",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  • قم بتشغيل npm pack في هذا الدليل ، ولاحظ أن كرة القطران قد تم إنشاؤها بسعادة
npm notice
npm notice 📦  [email protected]
npm notice === Tarball Contents ===
npm notice 205B package.json
npm notice === Tarball Details ===
npm notice name:          npm-repro
npm notice version:       1.0.0
npm notice filename:      npm-repro-1.0.0.tgz
npm notice package size:  241 B
npm notice unpacked size: 205 B
npm notice shasum:        ca39bc17447e27ef2fd0dea656e0e6b473f310d7
npm notice integrity:     sha512-p8tZD8W438r7t[...]7Oo0YMcAoNPzQ==
npm notice total files:   1
npm notice
npm-repro-1.0.0.tgz

لا يوجد index.js ، لذلك إذا حاولت هذه الحزمة استخدام هذه الحزمة ، فلن تعمل.

سلوك متوقع

  • npm pack برمز خروج غير صفري ، مما قد يؤدي أيضًا إلى فشل npm publish ويمنع الحزم التي لا تحتوي كرات القطر الخاصة بها على main من package.json من النشر إلى التسجيل.

من الذى

واجهت شركتنا هذا عندما حاولت النشر في سجلنا الداخلي.

مراجع

  • غير متوفر
Bug

التعليق الأكثر فائدة

هذا يبدو منطقيا. لأي سبب من الأسباب التي اتخذتها شركتي لاستخدام npm pack to كاختبار لمعرفة ما إذا كان النشر سيكتمل بنجاح أم لا. ربما يكون npm publish --dry-run اختيارًا أفضل.

ال 3 كومينتر

لست متأكدًا مما إذا كان هذا مناسبًا بشكل أفضل باعتباره خطأً مقابل npm-packlist . لست متأكدًا تمامًا من الكيفية التي تريد بها منظمة npm الحفاظ على فصل المخاوف بين الاثنين. أي يجب أن يقوم npm-packlist بإرجاع قائمة بالملفات التي يجب محاولة تضمينها دون إجراء أي تحقق من الصحة بشكل أعمى وترك هذا التحقق من صحة الطلب الأعلى يتم في أي حزم تريد أن تستهلك وظيفة npm-packlist ؟

هذه ليست وظيفة npm-packlist ، إنها وظيفة npm publish إن وجدت.

هذا يبدو منطقيا. لأي سبب من الأسباب التي اتخذتها شركتي لاستخدام npm pack to كاختبار لمعرفة ما إذا كان النشر سيكتمل بنجاح أم لا. ربما يكون npm publish --dry-run اختيارًا أفضل.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات