سالهاست توی پروژههای فرانتاند، تقریباً همهمون با این ترکیب کار کردهایم:
یک ابزار برای پیدا کردن مشکلهای کد (ESLint)
یک ابزار برای فرمت کردن کد (Prettier)
ترکیب خوبیه؛ ولی هرچی پروژه بزرگتر و وابستگیها بیشتر میشن، هزینهی اجرای این ابزارها هم بیشتر خودش رو نشون میده.
دقیقاً همینجاست که Biome وارد بازی میشه.
این ابزار با زبان Rust نوشته شده و از همون اول با هدف سرعت بالا و یکپارچهسازی ابزارهای Code Quality ساخته شده. یعنی بهجای اینکه چند ابزار مختلف رو برای Lint، Format و مدیریت تنظیمات کنار هم بچینیم، میتونیم بخش قابلتوجهی از این کارها رو با یک ابزار انجام بدیم.
اما چرا Biome اینقدر مورد توجه قرار گرفته؟
-️ از نظر Performance: بهدلیل معماری و پیادهسازی Rust، در پروژههای بزرگ میتونه زمان اجرای Lint و Format رو به شکل محسوسی کاهش بده؛ مخصوصاً وقتی این فرآیندها مرتباً در Editor یا CI اجرا میشن.
- از نظر Configuration: دیگه لازم نیست برای هماهنگ کردن چند ابزار و تعداد زیادی Plugin و Config، چندین لایه تنظیمات داشته باشیم.
- از نظر یکپارچگی: Linting و Formatting در یک اکوسیستم انجام میشن و همین موضوع میتونه تعداد ابزارها و وابستگیهای پروژه رو کمتر کنه.
- از نکات فنی جالبش اینه که در نسخههای جدیدتر (سری ۲.x)، قابلیت Type-aware Linting رو بدون نیاز به اجرای کامل TypeScript Compiler ارائه میده؛ چیزی که قبلاً بین ابزارهای Lint جاوااسکریپتی کمسابقه بود.
-️ برای پروژههای React، TypeScript، Next.js و حتی Monorepoها هم، Biome میتونه یک گزینهی جدی برای جایگزینی بخشی از Toolchain قدیمی باشه.
البته این به معنی این نیست که ESLint و Prettier دیگه به درد نمیخورن.
اکوسیستم ESLint هنوز بسیار بزرگه و Pluginهای زیادی داره؛ مثلاً بعضی قوانین خاص eslint-plugin-import هنوز معادل کاملی توی Biome ندارن و ممکنه در پروژههای خاص بهشون نیاز داشته باشید.
همینطور فرمتدهی Biome حدود ۹۷٪ با Prettier سازگاره، نه صددرصد؛ یعنی موقع مهاجرت ممکنه یه سری Diff جزئی رو ببینید، هرچند در عمل تأثیر چندانی روی کدبیس نداره.
شاید وقتش رسیده Toolchain فرانتاند رو کمی سادهتر کنیم.
@DevTwitter | <Pouya Bakhshi/>
Post #13238
6.29K
- 👎 19
- ❤ 12
- 👍 6