آپدیت وابستگیهای پروژه با ncu
خلاصهٔ کاملتر
npm-check-updates که با دستور کوتاه ncu صدا زده میشه، وابستگیهای package.json رو به آخرین نسخهٔ پایدار میبره ولی سیاست نسخهگذاری خودت رو خراب نمیکنه؛ یعنی ^18.3.1 میشه ^19.2.7 و علامت ^ سر جاش میمونه. تو مستندات پروژه تأکید شده که این ابزار فقط package.json رو دست میزنه و برای آپدیت واقعی پکیجها و فایل lock باید خودت npm install رو اجرا کنی.
ncu بدون آرگومان فقط گزارش میده چه چیزی قابل ارتقاست، و با ncu -u فایل package.json بازنویسی میشه. با -g سراغ پکیجهای سراسری میره، با -i حالت تعاملی باز میشه که خودت تیک هر پکیج رو میزنی، و با --filter و --reject میتونی با رشته، wildcard یا regex مشخص کنی کدوم پکیجها بررسی بشن. با npm، yarn، pnpm، deno و bun سازگاره و هم بهصورت CLI و هم بهعنوان ماژول قابل استفادهست.
مهمترین قابلیت تازهش --cooldown هست: یه حداقل سن برای نسخهها تعیین میکنه تا نسخهای که همین چند ساعت پیش منتشر شده وارد پروژه نشه — یه سپر ساده جلوی حملههای زنجیرهٔ تأمین. مقدارش میتونه عدد (روز) یا رشتهای با واحد باشه:
--cooldown 7 7 days
--cooldown 12h 12 hours
--cooldown 30m 30 minutesبا هدف پیشفرض latest، اگه آخرین نسخه هنوز تو بازهٔ cooldown باشه ncu به بزرگترین نسخهای که از آستانه گذشته عقبنشینی میکنه؛ با هدف سختگیرانهٔ @latest هم کلاً از اون پکیج رد میشه. اگه --cooldown رو صریح ندی، خودش سراغ تنظیمات بومی پکیجمنیجرت میره: min-release-age تو .npmrc، npmMinimalAgeGate تو .yarnrc.yml و minimumReleaseAge تو pnpm-workspace.yaml.
جدا از این، حالت --doctor آپدیتها رو یکییکی نصب میکنه و تستهای پروژه رو اجرا میکنه تا بفهمه کدوم ارتقا چیزی رو شکسته؛ بعد ارتقاهای خراب رو برمیگردونه و اونهایی که تستها رو رد کردن نگه میداره. طبق مستندات، نسخههای prerelease بهصورت پیشفرض نادیده گرفته میشن مگه با --pre صداشون کنی.
نکات کلیدی:
- فقط package.json رو تغییر میده؛ نصب واقعی با npm install انجام میشه
- محدودههای semver حفظ میشن و فقط شمارهها بالا میرن
- --cooldown نسخههای خیلی تازه رو نادیده میگیره تا ریسک پکیج آلوده کم بشه
- حالت تعاملی و فیلتر با wildcard و regex برای انتخاب دقیق پکیجها
- --doctor ارتقاهای شکننده رو با اجرای تست پیدا و برمیگردونه




