جالب توضیح دادید
دیدگاههایی که برای این نوشته ثبت شدهاند.
جالب توضیح دادید
حدود ۴ دقیقه مطالعه
NestJS نسخهی ۱۲ رو ۲۷ آگوست بهصورت رسمی منتشر کرد؛ بزرگترین تغییری که این نسخه با خودش میاره، مهاجرت کامل پکیجهای رسمی از CommonJS به ESM ـه. خبر خوب برای کسایی که پروژهی قدیمی دارن اینه که این مهاجرت اجباری نیست؛ اپلیکیشنهای CommonJS فعلی همچنان بدون تغییر کار میکنن و رفتن به سمت ESM کاملاً اختیاریه.
بخش فنی اصلی این نسخه همینه: پکیجهای هستهای NestJS حالا native ESM هستن. لطف Node.js مدرن اینجاست که با پشتیبانی از require(esm)، این مهاجرت خیلی کمتر از چیزی که چند سال پیش بود مخرب و پرهزینهست. خود CLI هم موقع ساخت پروژهی جدید ازت میپرسه که میخوای CommonJS بسازی یا ESM؛ یعنی تصمیم دست خودته، نه فریمورک.
یکی از فیچرهای مورد انتظار این نسخه، پشتیبانی از Standard Schema توی decoratorهای route ـه؛ یعنی میتونی برای validation و serialization بهجای وابستگی به یه کتابخونهی خاص، از هرکدوم از Zod، Valibot یا ArkType که دوست داری استفاده کنی. برای پروژههایی که قبلاً به class-validator گیر افتاده بودن، این یه آزادی عمل واقعیه.
خود Nest CLI هم زیر و رو شده؛ کل سورسش به ESM مهاجرت کرده، تستها از Jest به Vitest منتقل شدن، برای هر دستور e2e test اضافه شده و کلاسهای دستورها بهجای آرگومانهای untyped، حالا context objectهای تایپشده میگیرن. دو دستور جدید هم اضافه شده: nest upgrade (با اسم مستعار update) که یه پروژهی نسخهی ۱۱ رو به ۱۲ آپگرید میکنه و بخش مکانیکی مهاجرت (مثل تنظیمات webpack توی nest-cli.json، تغییر نام GraphQL playground به graphiql، جایگزینی پکیج NATS) رو خودش انجام میده و در آخر گزارشی از تغییرات و کارهای باقیمونده میده؛ و nest deploy که مستقیم اپلیکیشن رو (با نصب خودکار @nestjs/mau در اولین اجرا) روی کلود دیپلوی میکنه.
برای پروژههای جدید ESM، Vitest جایگزین پیشفرض Jest شده (پروژههای CommonJS همچنان با Jest میمونن)، oxlint بهجای ESLint اومده، و Rspack هم بندلر پیشفرض مونوریپوها شده؛ فلگهای --webpack/--webpackPath قدیمی هم به نفع --builder rspack منسوخ شدن.
یه SDK رسمی جدید به اسم @nestjs/observe هم معرفی شده که برخلاف ابزارهای APM عمومی که HTTP server رو patch میکنن، مستقیم از طریق آپشن instrument توی چرخهی عمر خود Nest جا میگیره؛ یعنی observability یه شهروند درجهیک فریمورک شده، نه یه افزونهی بیرونی.
پکیجهای رسمی جانبی هم با همین ریتم آپدیت شدن؛ مثلاً @nestjs/config مستقیم به نسخهی ۱۲.۰.۰ پرید (نسخهی ۵ اصلاً وجود نداره)، کاملاً ESM شده، و validation محیطیش هم بهجای کد اختصاصی Joi، حالا روی Standard Schema سوار شده.
طبق معمول انتشارهای بزرگ، همون روز یا خیلی زود بعد از ۱۲.۰.۰، یه نسخهی ۱۲.۰.۱ هم منتشر شد که چندتا اصلاحیهی کوچیک روی همین انتشار تازه اعمال کرده. تا لحظهی نوشتن این خبر، ۱۲.۰.۱ آخرین نسخهی موجود روی npm برای پکیجهای اصلی NestJSه؛ پس اگه همین الان پروژهی جدیدی با Nest 12 شروع میکنی، مطمئن شو که همین نسخه رو نصب کردی.
NestJS 12 دقیقاً همون آپدیتیه که کاربرهای این فریمورک سالها منتظرش بودن: ESM بدون اجبار، آزادی انتخاب کتابخونهی validation، و ابزارهای مدرنتر برای تست و بیلد. اگه پروژهات هنوز روی نسخهی ۱۱ ـه، عجلهای برای آپگرید نیست؛ ولی وقتی آماده بودی، nest upgrade --dry-run بهترین نقطهی شروعه تا قبل از هر تغییری، دقیقاً بدونی قراره چه چیزهایی عوض بشه.
برای اینکه بتوانید زیر این پست کامنت بگذارید، باید وارد حساب کاربری خود شوید.
برای ادامه، وارد حساب خود شوید
بعد از ورود، دوباره به همین پست برمیگردید و میتوانید کامنتتان را ثبت کنید.