الاثنين، 15 يونيو 2026

التغييرات الجذرية القادمة لإصدار npm v12

يُقدّم الإصدار الرئيسي التالي من npm، الإصدار 12، تغييرات افتراضية متعلقة بالأمان في أمر npm install. تتوفر جميع هذه التغييرات خلف تحذيرات في npm حاليًا على الإصدار 11.16.0 أو أحدث، ما يُتيح لك الاستعداد قبل الترقية. من المُتوقع إطلاق الإصدار 12 في يوليو 2026.
يُحوّل كل تغيير سلوك npm install، الذي يعمل تلقائيًا حاليًا، إلى سلوك يُمكنك تفعيله صراحةً:
خيار allowScripts مُعطّل افتراضيًا: لن يُنفّذ npm install بعد الآن نصوص preinstall أو install أو postinstall من التبعيات إلا إذا سُمح بها صراحةً في مشروعك. يشمل ذلك عمليات بناء node-gyp الأصلية (أي أن الحزمة التي تحتوي على ملف binding.gyp ولا تحتوي على نص install صريح لا تزال تُحظر، لأن npm يُشغّل إعادة بناء node-gyp ضمنيًا لها). تُحظر نصوص prepare من تبعيات git وfile وlink بنفس الطريقة. لمعرفة ما سيتم حظره، شغّل الأمر npm approve-scripts --allow-scripts-pending. بعد ذلك، اسمح بتثبيت الحزم التي تثق بها باستخدام `npm approve-scripts`، واحظر الباقي باستخدام `npm deny-scripts`. تُكتب قائمة السماح الناتجة في ملف `package.json`، ويجب حفظها في المستودع. إذا كان برنامج التثبيت لديك يُشغّل نصوصًا برمجية، فستلاحظ ظهور تحذيرات في npm 11.16.0 والإصدارات الأحدث.
القيمة الافتراضية لـ `--allow-git` هي `none`: لن يقوم npm install بعد الآن بحلّ تبعيات Git (مباشرةً أو غير مباشرة) إلا إذا تم السماح بها صراحةً عبر `--allow-git`. هذا يُغلق مسار تنفيذ التعليمات البرمجية حيث يمكن لملف `.npmrc` الخاص بتبعية Git تجاوز ملف Git التنفيذي، حتى مع استخدام `--ignore-scripts`. أُعلن عن هذا التغيير سابقًا في 18 فبراير 2026، وهو متوفر في npm 11.10.0 والإصدارات الأحدث.
القيمة الافتراضية لـ `--allow-remote` هي `none`: لن يقوم npm install بعد الآن بحلّ التبعيات من عناوين URL البعيدة، مثل ملفات tar المضغوطة عبر HTTPS (مباشرةً أو غير مباشرة)، إلا إذا تم السماح بها صراحةً عبر `--allow-remote`. هذا الخيار متاح في npm 11.15.0 والإصدارات الأحدث. أما الخياران --allow-file و --allow-directory المرتبطان به، فلن تتغير قيمهما الافتراضية في الإصدار 12.

المزيد

ليست هناك تعليقات:

إرسال تعليق

القوائم المترابطة المتضمنة (Intrusive linked lists)

القوائم المتصلة المتداخلة (Intrusive linked lists) هي نوع من القوائم المتصلة التي تكون فيها روابط الربط مُضمَّنةً داخل البنية نفسها التي يجر...