- prettier : مرحله سوم کد نوشته شدهی من توسط دستورات فرمتی که این پروژه رعایت میکند مانند style کد نویسی، استفاده از space یا tab، فاصله فرو رفتگی (indent) خطوط و غیره ... به صورت خودکار فرمت شد و کامیت من انجام شد.
داشتن ابزاری که چنین کارهایی را به صورت خودکار انجام دهد، حتی اگر به تنهایی بر روی یک پروژه کار کنیم، بسیار مفید است و کیفیت کار و کد تولید شده را بالا میبرد. ناگفته نماند که این موارد، یکی از اصلیترین دغدغههای نگهداری پروژه است؛ بخصوص وقتی بیش از یک برنامه نویس داشته باشیم. به طور مثال قبل از اینکه من این امکانات را به پروژههای خودم اضافه کنم، با تیمی که کار میکردم، همیشه سعی داشتیم که از تنظیمات و حتی IDE مشترکی استفاده کنیم تا مثلا formatter کد ما مثل هم باشد. اگر این موارد قبل از هر کامیت انجام شوند، برنامه نویسها میتوانند حتی در notepad کد نویسی انجام دهند و اطمینان داشته باشند، کد نوشته شده، هم اعتبار سنجی میشود و هم به صورت خودکار فرمت.
تا اینجا با یکسری مزایای پایهی داشتن چنین سیستمی آشنا شدیم ولی چطور این اتفاق رخ میدهد!؟ پاسخ: با استفاده از
Git Hooks . البته ما صرفا محدود به انجام همین کارها نیستیم. هر کاری که در ترمینال سیستم قابل انجام باشد، از طریق Git hooks هم قابل انجام است. مثلا یکی دیگر از استفادههای رایج از git hooks میتواند اجرای Unit-Testها قبل از push باشد.
در پروژهی vuepress، تعداد زیادی ابزار به صورت هماهنگ نصب شده و کار میکنند که در نهایت با استفاده از Hookهای Git، اجرا میشوند (مثلا از هوک
pre-commit برای اجرای یکسری فرمان قبل از هر کامیت). با سه مورد از این ابزارها، در ابتدای این مقاله آشنا شدیم. ولی کلید اصلی تمام اینها، دو ابزار
husky و
lint-staged هستند. husky ساخت و استفاده از git hookها را آسان میکند و lint-staged وظیفه دارد تا فایلهای stage شدهی در گیت را لیست کند و به سایر ابزارها برای اجرا ارسال نماید.
شاید بپرسید که تمام اینها از Nodejs و npm استفاده میکنند، چطور میتوانیم از این امکانات در دات نت استفاده کنیم!
این کتابخانه ترکیبی از ابزارهای husky و lint-staged و چند ابزار دیگر برای برنامه نویسان دات نت است. با استفاده از این ابزار به راحتی میتوانید از هوکهای Git برای اجرای دستورات خود یا سایر ابزارها استفاده کنید. husky.net یک task-runner داخلی دارد که تعریف و ایجاد تسکهای قابل اجرا توسط هوکها را آسان میکند.
نصب husky.net
# local installation (recommended)
cd <Your project root directory>
dotnet new tool-manifest
dotnet tool install Husky
# global installation
dotnet tool install --global Husky
نکته نهایی
من در این مقاله قصد داشتم فقط دلیل نیاز به چنین ابزاری را شرح دهم؛ توضیح اینکه husky.net چه امکاناتی دارد و چطور میتوان از آن استفاده کرد، خارج از حوصلهی این مقاله است. اگر شد در آینده مقالهای برای آموزش این ابزار تهیه میکنم؛ فعلا برای کسب اطلاعات بیشتر میتوانید به
صفحهی گیت هاب این ابزار مراجعه کنید و دلیل دیگر اینکه فکر میکنم الان زمان مناسبی برای آموزش نیست؛ چون این پروژه بسیار جوان است و به تازگی نوشته شده و احتمال اینکه فیچرهای آن به زودی تغییر کند هم وجود دارد. همینطور از علاقمندان به مشارکت در پروژههای open-source دعوت میکنم که به بهبود این ابزار و یا تهیهی ابزارهایی که در حال حاضر مشابهی در دات نت ندارند، کمک کنند. به طور مثال برای فرمت کد و آنالایزر،
dotnet-format مایکروسافت وجود دارد که بسیار کاربردیست؛ ولی ما ابزاری مثل
commit lint هنوز در دات نت نداریم. فعلا در صورت نیاز باید برای استفاده از آن همچنان node و npm را نصب کنیم.