NestJS 12 در راهه؛ کوچ به ESM و ابزارهای تازه
خلاصهٔ کاملتر
تو این پست وبلاگ Trilon اومده که کار روی NestJS 12 تو ریپازیتوری اصلی فریمورک شروع شده و نقشهی کلیش هم تو PR انتشار عمومی شده. هدف فعلی اوایل Q3 سال ۲۰۲۶ ـه و جهتگیری روشنه: مدرنسازی پلتفرم حول ESM، بهروزرسانی ابزارهای پیشفرض و چند قابلیت جدید که مدتها منتظرشون بودن. NestJS یه فریمورک TypeScript روی Node.js ـه برای ساختن اپلیکیشنهای مقیاسپذیر سازمانی.
مهمترین تغییر معماری، کوچ پکیجهای هسته از CommonJS به ESM ـه. نکتهای که نویسنده تأکید میکنه اینه که این مهاجرت خیلی کمدردسرتر از چند سال پیشه، چون نسخههای جدید Node.js از require(esm) پشتیبانی میکنن و خیلی پروژهها بدون بازنویسی سنگین میتونن پکیجهای جدید رو بردارن. با این حال هنوز باید اسکریپتهای بیلد سفارشی، CLIهای اختصاصی، ایمپورتهای عمیق به داخل Nest و فرضهای module resolution تو tsconfig.json رو بازبینی کنی.
قرار نیست همه یهشبه به یه فرمت مجبور بشن: Nest CLI موقع ساخت پروژه ازت میپرسه که CommonJS میخوای یا ESM. ابزار پیشفرض هم بسته به همین انتخاب فرق میکنه؛ پروژههای ESM با Vitest و oxlint ساخته میشن و اسکماتیک CJS همچنان Jest رو نگه میداره. به گفتهی نویسنده این یعنی تیمها میتونن استک جدید رو بدون یه مهاجرت یکروزهی اجباری تست کنن.
تو بخش ابزار، Rspack جایگزین webpack تو مسیر CLI میشه، پس اگه به رفتار خاص وبپک یا پلاگین سفارشی وابستهای بهتره زودتر با پکیجهای پیشانتشار تست کنی. یه نکتهی مهم هم اینه که tsc همچنان کامپایلر پیشفرض میمونه؛ خط لولهی بیلد داره تغییر میکنه ولی کامپایلر تایپاسکریپت جایی نمیره و پشتیبانی از نسخهی TypeScript-Go هم بعداً اضافه میشه.
جذابترین اضافهی سطح فریمورک، پشتیبانی از Standard Schema تو دکوریتورهای روت مثل @Body() و @Query() ـه. یعنی میتونی هر آبجکت سازگار با Standard Schema — از Zod و Valibot تا ArkType — رو مستقیم به دکوریتور بدی و اعتبارسنجی رو اسکیمامحور انجام بدی. همین ایده برای serializer interceptor هم برنامهریزی شده تا هندل کردن ورودی و خروجی یکدستتر بشه.
@Post()
create(@Body({ schema: createCatSchema }) createCatDto: CreateCatDto) {
return this.catsService.create(createCatDto);
}نویسنده صریح میگه این جایگزین class-validator نیست؛ یه گزینهی اضافهست برای تیمهایی که رویکرد schema-first رو ترجیح میدن و مستندات هنوز class-validator رو بهعنوان انتخاب پیشفرض پیشنهاد میکنه. کنارش یه فهرست بلند از تغییرهای کوچکتر هم داره: پشتیبانی از errorCode تو HttpExceptionOptions، تایپسیفتی بهتر برای pipeها، لاگ ساختیافته، پشتیبانی NATS v3 و الگوهای regexp کافکا، فیلتر استثنا برای gRPC، پیشفرض شدن GraphiQL و تشخیص تداخل روت تو روتر هسته.
برای امتحان کردن، پکیجهای پیشانتشار زیر تگ next منتشر میشن؛ میشه پکیجهای Nest رو از next نصب کرد یا با @nestjs/cli@next پروژهی جدید ساخت. جدا از خود فریمورک، سایت NestJS هم بعد از حدود ۹ سال اولین ردیزاین بزرگش رو میگیره. جمعبندی نویسنده اینه که خبر اصلی v12 یه شکست بزرگ در زمان اجرا نیست، بلکه مدرنسازی کل تجربهی توسعهست.
نکات کلیدی:
- هدف انتشار: اوایل Q3 سال ۲۰۲۶، با نقشهی عمومی تو PR انتشار
- پکیجهای هسته به ESM میرن، ولی require(esm) مهاجرت رو نرمتر میکنه
- CLI بین CJS و ESM انتخاب میده؛ ESM با Vitest و oxlint، CJS با Jest
- Rspack جایگزین webpack میشه ولی tsc کامپایلر پیشفرض میمونه
- دکوریتورهای روت از Standard Schema (Zod، Valibot، ArkType) پشتیبانی میکنن
- بیشترین کار مهاجرت برای پروژههاییه که ابزار سفارشی یا ایمپورت عمیق دارن




