برمجياتقراءة دقيقتين

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

صدر الإصدار 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 بانتظار وقت مناسب، فقد اتخذ الإطار القرار نيابة عنها.

المصادر

  1. بيانات @nestjs/core على npm
  2. بيانات @nestjs/cli على npm
  3. صفحة الحزمة على npm
  4. مستودع NestJS
  5. توثيق Node عن ESM وCommonJS

من عدد الجمعة 15 ربيع الأول - 28 أغسطس

أخبار ذات صلة

برمجيات

npm يرفض حزمة اسمها estee لتشابهها مع testem، وحساب يُظهر أن 841 اسمًا تكفي لإغلاق الأسماء الرباعية

المغزى: الحماية من انتحال أسماء الحزم حقيقية، لكن سقفها الثابت لا يتغير مع طول الاسم، فيقع ثمنها كله على من يبحث عن اسم قصير بينما تمر الأسماء الطويلة بلا عائق.

20 جمادى الأولى - 31 أكتوبر

أخبار الجمعة 15 ربيع الأول - 28 أغسطس