بابل ۸ اومد؛ فقط ESM و بدون خروجی ES5
خلاصهٔ کاملتر
تیم بابل بعد از ۸ سال از انتشار بابل ۷، حالا بابل ۸ رو بیرون داده. طبق گفتهی تیم، این نسخه هیچ فیچر جدیدی نسبت به بابل ۷ نداره؛ در عوض کل تمرکز رو گذاشتن روی مدرن کردن هستهی ابزار تا برای ۸ سال آینده آماده باشه. با اینکه تو این سالا کامپایلرهای جایگزین مثل SWC و Oxc اومدن و خود جاوااسکریپت هم فیچرهای زیادی گرفته، طبق آمار خود تیم دانلود هفتگی بابل از ۱.۷ میلیون تو سال ۲۰۱۸ به ۶۵۱ میلیون رسیده؛ یعنی تو یه سال اخیر دو برابر شده.
مهمترین تغییر اینه که بابل ۸ فقط ESM هست و دیگه CommonJS رو ساپورت نمیکنه؛ برای اجرا هم به Node.js نسخهی ۲۲، ۲۴، ۲۶ یا بالاتر نیاز داره. این تصمیم به لطف ساپورت require(esm) تو نسخههای LTS نود گرفته شده و باعث میشه سایز پکیجها کوچیکتر بشه، بدون اینکه کد خود کاربرها که هنوز از CommonJS استفاده میکنن خراب بشه.
تغییر بزرگ دیگه اینه که @babel/preset-env دیگه بهطور پیشفرض به ES5 کامپایل نمیکنه؛ بهجاش از query پیشفرض Browserslist استفاده میکنه که الان تقریباً معادل ES2023 هست. اگه هنوز به ES5 یا حتی ES3 نیاز دارید، باید targets رو خودتون تو کانفیگ مشخص کنید. در کنارش، خروجی پیشفرض preset-env هم از CommonJS به ESM تغییر کرده.
تیم بابل همچنین گزینههای loose و spec رو از @babel/preset-env حذف و از پلاگینهای تکی deprecate کرده؛ توصیهشون اینه که قبل از مهاجرت به بابل ۸، از assumptions استفاده کنید که کنترل دقیقتری روی این trade-offها میده. تزریق پالیفیل هم از corejs/useBuiltIns جدا شده و حالا از babel-plugin-polyfill-corejs3 انجام میشه.
نویسندهها تو پست تاکید کردن که این مهاجرت قراره خیلی سادهتر از مهاجرتهای قبلی (بابل ۵ به ۶ و ۶ به ۷) باشه. در کنار اعلام نسخهی جدید، تیم به یه مشکل مالی هم اشاره کرده: با اینکه استفاده از بابل هر روز بیشتر میشه، میزان اسپانسرشیپ و کمکهای مالی به پروژه تو سالهای اخیر مدام کم شده و بدون کمک نهادهایی مثل Sovereign Tech Agency و Igalia، ادامهی نگهداری بابل با این کیفیت سخت میشه. بابل ۷ هم تا یک سال دیگه (تا ژوئن ۲۰۲۷) فقط پچ امنیتی میگیره و دیگه فیچر جدید بهش اضافه نمیشه.
نکات کلیدی:
- بابل ۸ منتشر شد؛ بدون فیچر جدید، با تمرکز روی مدرنسازی هسته
- حالا فقط ESM هست و نیاز به Node.js 22/24/26+ داره
- دیگه بهطور پیشفرض به ES5/CommonJS کامپایل نمیکنه؛ هدف پیشفرض تقریباً ES2023 شده
- گزینههای loose/spec حذف شدن؛ جایگزین assumptions هست
- بابل ۷ فقط تا ژوئن ۲۰۲۷ پچ امنیتی میگیره




