تغییرات شکنندهٔ npm v12: حالا اسکریپتهای نصب پیشفرض خاموشن
خلاصهٔ کاملتر
تو این چنجلاگ اومده که نسخهٔ اصلی بعدی npm یعنی v12 یه سری تغییر پیشفرض مربوط به امنیت رو روی npm install میاره و تخمین زده شده تو جولای ۲۰۲۶ منتشر بشه. نکتهٔ کلیدی اینه که همهٔ این تغییرها همین الانم تو npm نسخهٔ 11.16.0 به بعد پشت هشدار در دسترسن، پس میتونی قبل از ارتقا کارها رو امتحان کنی. ایدهٔ کلی هم اینه که هر رفتاری که الان موقع نصب خودبهخود اجرا میشه، تو v12 تبدیل میشه به چیزی که باید خودت صریحاً واردش بشی.
مهمترین تغییر اینه که allowScripts پیشفرض خاموش میشه. یعنی npm install دیگه اسکریپتهای preinstall، install و postinstall وابستگیها رو اجرا نمیکنه مگه اینکه تو پروژهت برای اون پکیجها صریحاً مجاز شده باشن. این شامل بیلدهای نیتیو node-gyp هم میشه؛ یعنی حتی یه پکیجی که فایل binding.gyp داره ولی اسکریپت نصب صریح نداره هم بلاک میشه، چون npm بهصورت ضمنی براش یه node-gyp rebuild اجرا میکرد. اسکریپتهای prepare وابستگیهای git و file و link هم به همین شکل بلاک میشن.
برای اینکه ببینی چی قراره بلاک بشه، میتونی npm approve-scripts --allow-scripts-pending رو اجرا کنی. بعد پکیجهایی که بهشون اعتماد داری رو با npm approve-scripts مجاز کن و بقیه رو با npm deny-scripts ببند. لیست مجازی که در میاد داخل package.json نوشته میشه و باید کامیتش کنی تا بعد از ارتقا فقط همون اسکریپتهایی که تأیید کردی اجرا بشن و بقیه متوقف بشن.
دو تغییر پیشفرض دیگه هم دربارهٔ منبع وابستگیهاست. پرچم --allow-git پیشفرض میشه none، یعنی npm install دیگه وابستگیهای Git رو (چه مستقیم چه ترنزیتیو) ریزالو نمیکنه مگه با --allow-git اجازه بدی. به گفتهٔ مقاله این یه مسیر اجرای کد رو میبنده که توش فایل .npmrc یه وابستگی Git میتونست executable مربوط به Git رو بازنویسی کنه، حتی وقتی --ignore-scripts هم گذاشته بودی. همینطور --allow-remote هم پیشفرض none میشه و دیگه وابستگیها از URLهای ریموت مثل تاربالهای https ریزالو نمیشن مگه صریحاً مجاز بشن.
برای آمادهشدن، تیم GitHub پیشنهاد میده به npm نسخهٔ 11.16.0 یا بالاتر ارتقا بدی، نصب معمولیت رو اجرا کنی و هشدارها رو مرور کنی. دقت کن که پرچمهای --allow-file و --allow-directory تو v12 پیشفرضشون عوض نمیشه. کل هدف این تغییرها اینه که زنجیرهٔ تأمین (supply chain) امنتر بشه و اجرای خودکار کد ناشناخته موقع نصب، پیشفرض از کار بیفته.
نکات کلیدی:
- npm v12 تخمیناً جولای ۲۰۲۶ منتشر میشه و تغییرها از الان تو نسخهٔ 11.16.0 پشت هشدار در دسترسن
- allowScripts پیشفرض خاموش میشه؛ اسکریپتهای نصب وابستگیها و بیلدهای ضمنی node-gyp دیگه خودکار اجرا نمیشن
- با npm approve-scripts و npm deny-scripts لیست مجاز رو میسازی و داخل package.json کامیت میکنی
- --allow-git پیشفرض none میشه و یه مسیر اجرای کد از طریق بازنویسی executable گیت رو میبنده
- --allow-remote هم پیشفرض none میشه و وابستگیهای ریموت دیگه خودکار ریزالو نمیشن




