npm ۱۲ کلی تغییر شکننده با خودش آورد
خلاصهٔ کاملتر
ریلیز نوت رسمی نسخهی 12.0.0 خط فرمان npm (منتشرشده در ۸ ژوئیهی ۲۰۲۶) یه فهرست پرشمار از تغییرات شکننده داره که خیلیهاشون روی جریان کار روزمره اثر میذارن. مهمترین دسته همون پیشفرضهای امنیتیه: allow-git و allow-remote حالا پیشفرض noneن و برای نصب وابستگی گیت یا tarball از URL باید صریح روی all یا root تنظیمشون کنی؛ ضمناً preinstall ریشه حالا قبل از نصب وابستگیها اجرا میشه.
چند دستور قدیمی کامل حذف شدن. npm shrinkwrap و alias کانفیگ shrinkwrap رفتن و فایل npm-shrinkwrap.json دیگه خونده و رعایت نمیشه؛ باید اون رو به package-lock.json تغییر نام بدی و اگه به قفل درخت وابستگی نیاز داری از bundleDependencies استفاده کنی. دستور npm adduser هم حذف شده و ساخت حساب باید از وبسایت npm انجام بشه و برای ورود از npm login استفاده کنی. دستورهای star و stars و unstar هم دیگه نیستن.
رفتار خروجی چند دستور هم عوض شده. npm view --json حالا همیشه یه آرایه برمیگردونه، خروجی npm pkg دیگه اجباراً json نیست و مقادیر تکی رو تمیزتر میده، و خروجی --json دستورهای npm pack و npm publish یکدست و همفرمت شده. گزارش npm sbom با فرمت cyclonedx حالا فیلد name هر پکیج رو از package.json میخونه نه از نام پوشهی روی دیسک، پس ممکنه name و purl بعضی کامپوننتها تغییر کنه.
یه سری تغییر ریزتر ولی مهم هم هست. کانفیگهای ناشناخته توی .npmrc، فلگهای ناشناختهی CLI، فلگهای مخفف و شورتهندهای تکخطتیرهی چندحرفی حالا بهجای هشدار خطا میدن. لایسنس پیشفرض npm init از ISC به رشتهی خالی تغییر کرده، پس اگه ست نشه فیلد license اصلاً توی پکیج نمیاد. صفحات man موقع نصب global دیگه ثبت نمیشن (man npm-install کار نمیکنه ولی npm help install سرجاشه)، و فیلدهای Twitter و Freenode از پروفایل رجیستری حذف شدن.
دربارهی سازگاری، این نسخه Node رو با محدودهی ^22.22.2 || ^24.15.0 || >=26.0.0 پشتیبانی میکنه، پس قبل از ارتقا نسخهی Node پروژه رو چک کن. کلی از پکیجهای workspace مثل arborist و config و libnpmpublish هم به major جدید رفتن.
نکات کلیدی:
- npm shrinkwrap، npm adduser و دستورهای star/unstar کاملاً حذف شدن.
- allow-git و allow-remote پیشفرض none شدن و preinstall ریشه قبل از وابستگیها اجرا میشه.
- کانفیگ و فلگ ناشناخته حالا خطا میده، نه هشدار؛ لایسنس پیشفرض npm init خالی شده.
- حداقل نسخهی پشتیبانیشدهی Node به ^22.22.2 || ^24.15.0 || >=26.0.0 رسیده.




