# NestJS 12 يصدر بحزمة ESM بالكامل ويحذف webpack من أداة الـ CLI

> **المغزى:** قرار الانتقال إلى ESM الذي أجّلته فرق كثيرة لسنوات اتخذه الإطار نيابة عنها، وأغلب كلفة الترقية ستقع في أدوات البناء والاختبار لا في منطق التطبيق.

- المصدر: المغزى (https://almaghza.com/a/2026-08-28-nestjs-12-esm-only/)
- التاريخ: 15 ربيع الأول - 28 أغسطس 2026 (2026-08-28)
- القسم: برمجيات
- الوسوم: NestJS، TypeScript، JavaScript، npm

صدر الإصدار 12 من إطار NestJS في 27 أغسطس 2026، وأهم ما فيه لا يظهر في الإعلان بل في ملف package.json. ففي الحزمة @nestjs/core بإصدارها 12.0.1 سطر نصه "type": "module"، وهو حقل لم يكن موجودًا أصلًا في الإصدار 11.2.3.

ويعني ذلك أن الحزمة صارت ESM بالكامل. كما أن حقل exports فيها يحتوي على مسار واحد، لا مسارين أحدهما للـ import والآخر للـ require، كما في الحزم التي تدعم النظامين معًا.

وهذه ليست تفصيلة في طريقة التغليف. فهي التي تحدد ما سيتعطل عند الترقية، والمتعطل غالبًا ليس كود التطبيق نفسه بل الأدوات المحيطة به: إعدادات jest المضبوطة على CommonJS، وts-node بإعداداته القديمة، وأي موضع في المشروع ما زال يستخدم require لاستدعاء شيء من Nest.

وفي أداة الـ CLI تغيير أوضح. فالإصدار 11 من @nestjs/cli كان يعتمد على 4 حزم من webpack، بينما لا يحتوي الإصدار 12.0.0 على أي منها. كما انتقلت نسخة TypeScript المعتمدة من 5.8.3 إلى 6.0.2 تقريبًا.

فالإصدار الجديد ليس مجرد نسخة أحدث من الإطار، بل إعادة بناء لطريقة بنائه من الأساس.

وبالنسبة للفرق التي تشغّل backend مبنيًا على Nest في بيئة الإنتاج، تصبح الترقية مهمة تستغرق يوم عمل على الأقل، وليست تحديثًا صغيرًا بين مهمتين. ومعظم هذا الوقت سيذهب إلى إعدادات البناء والاختبارات، لا إلى منطق الأعمال. أما الفرق التي أجّلت الانتقال إلى ESM بانتظار وقت مناسب، فقد اتخذ الإطار القرار نيابة عنها.

## المصادر

- [بيانات @nestjs/core على npm](https://registry.npmjs.org/@nestjs/core)
- [بيانات @nestjs/cli على npm](https://registry.npmjs.org/@nestjs/cli)
- [صفحة الحزمة على npm](https://www.npmjs.com/package/@nestjs/core)
- [مستودع NestJS](https://github.com/nestjs/nest)
- [توثيق Node عن ESM وCommonJS](https://nodejs.org/api/esm.html)
