فهرست مطالب
بحث بر سر فاصلهگذاری، نقطه ویرگول یا طول هر خط در تیمهای نرمافزاری ساعتها وقت مفید بازبینی کد را هدر میدهد. وقتی چند نفر روی یک پروژه مشترک کار میکنند، تفاوت سلیقه در سبک نوشتن متن برنامه باعث شلوغی تغییرات گیت و اصطکاک بیهوده میشود. ابزار Prettier برای پایاندادن به همین بحثها ساخته شد تا چیدمان ظاهری کد را بدون دخالت سلیقه فردی بازنویسی کند.
پریتییر چه کار میکند
پریتییر یک فرمتکننده کد با نظر تحمیلی یا اصطلاحاً opinionated است. این ابزار کد شما را میخواند، ساختار درختی آن (AST) را استخراج میکند و سپس تمام فاصلهها، شکستن خطها، تورفتگیها و نقلقولها را بر اساس قواعد ثابت خود از نو میچیند. مزیت بزرگ این روش این است که سبک دستی قبلی کاملاً کنار میرود و تمام فایلهای پروژه ظاهر واحدی پیدا میکنند، بدون آنکه رفتار اجرایی برنامه کوچکترین تغییری بکند.
این ابزار زبانها و ساختارهای متعددی را پشتیبانی میکند که از جمله آنها میتوان به جاوااسکریپت، تایپاسکریپت، HTML، CSS، JSON و مارکداون اشاره کرد.
چه کسانی به این ابزار نیاز دارند
اگر به تنهایی پروژههای فرانتاند یا بکاند مینویسید یا در یک تیم چندنفره فعالیت دارید، پریتییر جلوی پراکندگی سبک را میگیرد. توسعهدهندگانی که دوره جاوااسکریپت از صفر تا برنامهنویس را پشت سر میگذارند، معمولاً در ابتدای مسیر با چالش خوانایی کد و تورفتگی اشتباه دستبهگریبان هستند. پریتییر بار ذهنی قالببندی را از روی دوش برنامهنویس برمیدارد تا تمرکز روی پیادهسازی منطق بماند. تیمهایی که میخواهند درخواستهای ادغام گیت فقط شامل منطق واقعی تغییرات باشد و تغییرات فاصلهگذاری در diff ظاهر نشود، مخاطب مستقیم این ابزار هستند.
نصب بر اساس مستندات رسمی
مستندات رسمی پریتییر پیشنهاد میکند این بسته به صورت محلی و با نسخه دقیق در پروژه ذخیره شود تا همه اعضای تیم دقیقاً با یک نسخه مشترک کار کنند. برای نصب در یک پروژه نودجیاس فرمان زیر را اجرا کنید:
bashnpm install --save-dev --save-exact prettier
سپس یک فایل خالی به نام prettierrc. برای مشخص کردن وجود پیکربندی بسازید تا ویرایشگرهای متن و ابزارهای CI متوجه حضور آن شوند:
bashnode -e "fs.writeFileSync('.prettierrc', '{}\n')"
همچنین با ایجاد فایل prettierignore. میتوانید فایلهایی مانند خروجیهای ساخت و پوشه وابستگیها را از بررسی خارج کنید:
textnode_modules
build
dist
اجرای اولین فرمان و خروجی آن
برای ارزیابی فایلها بدون اعمال تغییر، فرمان بررسی وضعیت اجرا میشود:
bashnpx prettier . --check
اگر فایلی به اصلاح نیاز داشته باشد، نام آن در خروجی درج میشود:
textChecking formatting...
[warn] src/index.js
[warn] Code style issues found in the above file. Run Prettier to fix.
برای بازنویسی خودکار و اصلاح تمام خطوط نامرتب، پرچم write به کار میرود:
bashnpx prettier . --write
خروجی نشان میدهد که فایلها مرتب شدهاند:
textChecking formatting...
src/index.js 24ms (reformatted)
All matched files formatted.
تفاوت فرمتکردن با اصلاح منطق کد
بزرگترین سوءبرداشت از پریتییر، انتظار وظایف لینتر از آن است. لینترهایی مثل ESLint دو وظیفه دارند: اول بررسی کیفیت کد و پیدا کردن باگهای احتمالی، دوم بررسی ظاهر و سبک نگارش. پریتییر فقط و فقط ظاهر را مرتب میکند. کارهایی که نباید از پریتییر بخواهید شامل موارد زیر است:
یک، پیدا کردن متغیرهای تعریفشده ولی استفادهنشده؛ پریتییر هرگز متغیری را پاک نمیکند چون این کار تغییر در معنای کد است.
دو، جلوگیری از اشتباهات منطقی و امنیت؛ خطاهایی مثل استفاده از متغیر سراسری تعریفنشده یا تبدیلهای ضمنی نامطمئن وظیفه لینتر و تحلیلگر ایستا است.
سه، تغییر ساختار جملات شرطی یا حلقهها؛ پریتییر بدنه شرطها را بازنویسی یا ساده نمیکند.
ترکیب اصولی در پروژهها این است که قوانین قالببندی ظاهری ESLint را خاموش کنید و آن را فقط به باگیابی بسپارید، در حالی که وظیفه مرتبسازی خطوط را تماماً به پریتییر واگذار کنید.
محدودیتهای صادقانه پریتییر
پریتییر به عمد تنظیمات بسیار محدودی ارائه میدهد. طراحان آن فلسفه مشخصی دارند: هر گزینه تنظیمی جدید، زمینه بحثهای تازه در تیم را فراهم میکند. بنابراین اگر تیمی بخواهد جزئیات شکستن زنجیره توابع، محل دقیق براکتها در هر شرایط خاص یا فاصلهگذاری دلخواه داخل آرایهها را خطبهخط سفارشی کند، پریتییر ابزار مناسبی برای او نخواهد بود.
محدودیت دیگر در کدهای حاوی منطق ریاضی یا جدولهای دستنویس با کامنت است. پریتییر تمام فاصلههای تراز دستی را بازنویسی میکند، مگر اینکه با افزودن کامنت مخصوص prettier-ignore یک بلوک مشخص را از فرمتکردن مستثنی کنید.




نظرها
اولین نفری باشید که نظر میدهدسؤالتان را بپرسید یا تجربهتان را بنویسید تا نویسندهی مطلب پاسخ بدهد.