eslint-rspack-plugin نسخه 5.0.0 به‌صورت خالص ESM منتشر شد

پلاگین eslint-rspack-plugin، که بررسی‌های ESLint را هنگام کامپایل با Rspack اجرا می‌کند، در نسخهٔ 5.0.0 فقط به‌صورت ESM منتشر شده و بیلد CommonJS حذف شده است. این تصمیم همسو با تغییرات Rspack 2.0 و روند جاری Node.js برای بارگذاری ماژول‌ها اتخاذ شده است.

اهمیت تغییر

حذف بیلد CommonJS و انتشار صرفاً به‌صورت ESM نشان‌دهندهٔ حرکت به سمت استانداردهای ماژول‌های مدرن است. نسخه‌های جدید Node.js بارگذاری ESM را بهتر پشتیبانی می‌کنند، بنابراین در اغلب پروژه‌ها نیازی به بازنویسی گستردهٔ کد برای استفاده از این پلاگین وجود ندارد؛ با این حال، توصیه می‌شود مهاجرت را در محیط توسعه و CI آزمایش کنید تا مشکلات بارگذاری شناسایی شوند.

عملکرد و گزینه‌های کلیدی در سری 5.x

پلاگین همچنان اجرای ESLint را در فرایند ساخت بر عهده دارد و در حالت watch تنها روی فایل‌هایی که Rspack تغییر داده مجدداً lint اجرا می‌کند. این پروژه از فورک eslint-webpack-plugin منشأ گرفته و برای کاربران webpack آشناست.

ویژگی‌های کلیدی

  • کشینگ — به‌صورت پیش‌فرض فعال برای کاهش زمان اجرا.
  • configType — امکان انتخاب بین فرمت سنتی eslintrc و پیکربندی جدیدتر flat در ESLint.
  • threads — اجرای کارهای lint در یک استخر نخ برای افزایش موازی‌سازی.
  • lintAllFiles — بررسی همهٔ فایل‌ها به‌جای محدود شدن به گراف وابستگی، مناسب برای ساخت‌های چندمحیطی که کلاینت و سرور جدا اجرا می‌شوند.
پیکربندی eslint-rspack-plugin و نمایش فایل‌های lint شده

هشدار کاربردی: lint درون باندلر یا اجرای جداگانه؟

فایل README پروژه اشاره کرده اجرای ESLint داخل فرایند ساخت ممکن است زمان کامپایل را افزایش دهد؛ در بسیاری از سناریوها اجرای lint با یک دستور جداگانه کارآمدتر است. همین توصیه در بستهٔ @rsbuild/plugin-eslint و مستندات Rsbuild تکرار شده است؛ Rsbuild به‌صورت پیش‌فرض ESLint را در طول ساخت اجرا نمی‌کند تا عملکرد کامپایل حفظ شود.

Rslint و تمرکز بر سرعت

تیم Rstack پروژهٔ Rslint را معرفی کرده است؛ لاینتری نوشته‌شده با زبان Go و دارای تمرکز بر TypeScript که طبق اعلام تیم، در برخی موارد 20 تا 40 برابر سریع‌تر از تنظیمات سنتی ESLint اجرا می‌شود. برای تیم‌هایی که اولویت اصلی‌شان سرعت ساخت است، استفاده از یک لاینتر مستقل (مثل اجرای ESLint جدا یا جایگزینی سریع‌تر مانند Rslint) به‌تدریج جذاب‌تر می‌شود.

نکات عملی برای مهاجرت و ارتقا

  • قبل از ارتقا از شاخهٔ 4.x، انتشار ESM خالص را در محیط توسعه و CI خود تست کنید تا مشکلات بارگذاری یا ناسازگاری شناسایی شوند.
  • در صورت امکان به پیکربندی configType: 'flat' مهاجرت کنید تا از امکانات جدید ESLint بهره‌مند شوید.
  • برای جزئیات بیشتر دربارهٔ تغییرات مرتبط با ESM به یادداشت‌های انتشار Rspack 2.0 مراجعه کنید و بسته را از صفحهٔ npm نصب یا بررسی نمایید.

چک‌لیست سریع برای مهاجرت

  • اجرای تست‌های ساخت و lint در محیط‌های محلی و CI.
  • بررسی وابستگی‌های پروژه برای سازگاری با ESM.
  • تصمیم‌گیری دربارهٔ اجرای lint داخل باندلر یا به‌صورت جداگانه بر اساس نیازهای تیم و زمان کامپایل.

این انتشار نشان می‌دهد اکوسیستم Rstack به سمت استانداردسازی ماژول‌ها و بهبود کارایی فرایندهای توسعه حرکت می‌کند. تیم‌ها اکنون سه مسیر اصلی پیش رو دارند: ادامهٔ lint داخل باندلر با پلاگین‌های مشابه، اجرای ESLint به‌صورت جداگانه، یا استفاده از لاینترهای جایگزین و سریع‌تر؛ هر گزینه مزایا و هزینه‌های خاص خود را در فرایند توسعه و استقرار دارد.