با tooling.report بهترین ابزار ساخت را برای پروژه خود انتخاب کنید

ابزارهای ساخت را بر اساس بهترین شیوه ها انتخاب و پیکربندی کنید.

امروز web.dev در حال راه اندازی یک ابتکار جدید به نام tooling.report است. این وب سایتی است که به توسعه دهندگان وب یک نمای کلی از ویژگی های پشتیبانی شده در مجموعه ای از ابزارهای ساخت محبوب ارائه می دهد. ما این سایت را ساختیم تا به شما کمک کنیم ابزار ساخت مناسبی را برای پروژه بعدی خود انتخاب کنید، تصمیم بگیرید که آیا مهاجرت از یک ابزار به ابزار دیگر ارزشش را دارد یا نه، یا بفهمید که چگونه بهترین روش ها را در پیکربندی ابزار و پایه کد خود بگنجانید. ابزارها حوزه‌های تمرکز متفاوتی دارند و مجموعه‌ای از نیازها را برآورده می‌کنند، به این معنی که انتخاب و پیکربندی ابزارها مستلزم ایجاد معاوضه است. با tooling.report، هدف ما توضیح این معاوضه ها و مستندسازی نحوه پیروی از بهترین شیوه ها با هر ابزار ساخت معین است.

هیجان انگیز به نظر می رسد؟ برای شروع کاوش، از tooling.report دیدن کنید، یا برای کسب اطلاعات بیشتر در مورد چرایی و چگونگی توسعه این سایت، به ادامه مطلب مراجعه کنید.

ابزارهای ساخت اغلب سر راه ما قرار می گیرند

در GoogleChromeLabs ، برنامه‌های وب مانند Squoosh و Proxx و همچنین وب‌سایت‌هایی مانند برنامه Chrome Dev Summit 2019 ساخته‌ایم. مانند هر پروژه توسعه وب، ما معمولاً با بحث در مورد زیرساخت پروژه مانند محیط میزبانی، چارچوب ها و راه اندازی ابزار ساخت خود شروع می کنیم. این زیرساخت با پیشرفت پروژه به‌روزرسانی می‌شود: افزونه‌های جدیدی اضافه می‌شوند تا چارچوب‌ها یا تکنیک‌هایی را که ما اتخاذ می‌کنیم تطبیق دهند، یا نحوه نوشتن کد تغییر می‌کند تا ابزارهای ساخت ما بهتر بفهمند که ما به چه چیزی می‌خواهیم دست پیدا کنیم. در طول این فرآیند، اغلب متوجه شده‌ایم که ابزارهایی که انتخاب می‌کنیم در نهایت سر راه ما قرار می‌گیرند.

تیم ما بر ارائه بهترین تجربه وب به کاربران متمرکز است، که اغلب منجر به تنظیم دقیق نحوه مونتاژ و تحویل دارایی های ظاهری ما می شود. به عنوان مثال، اگر یک اسکریپت رشته اصلی و اسکریپت وب کارگر دارای وابستگی های مشترک باشند، مایلیم به جای اینکه برای هر اسکریپت دو بار آن را بسته بندی کنیم، یک بار وابستگی ها را دانلود کنیم. برخی از ابزارها از این قابلیت پشتیبانی می کنند، برخی نیاز به تلاش قابل توجهی برای سفارشی سازی برای تغییر رفتارهای پیش فرض دارند، و برای برخی دیگر کاملا غیرممکن است.

این تجربه ما را بر آن داشت تا بررسی کنیم که ابزارهای ساخت مختلف چه کاری می توانند انجام دهند و چه کاری نمی توانند انجام دهند. امید ما این بود که یک چک لیست برای ویژگی ها ایجاد کنیم تا دفعه بعد که پروژه جدیدی را شروع می کنیم، بتوانیم بهترین ابزار را برای پروژه ما ارزیابی و انتخاب کنیم.

رویکرد ما

چگونه می توانیم ابزارهای مختلف ساخت را در یک مکان ارزیابی و مقایسه کنیم؟ ما با نوشتن موارد آزمایشی به آن نزدیک شدیم.

تیم ما معیارهای آزمایشی را مورد بحث و بررسی قرار داد و آنها را طراحی کرد که معتقدیم بهترین روش‌ها برای توسعه وب هستند. ما به طور خاص بر نحوه ارائه تجربیات کاربر سریع، پاسخگو و روان تمرکز کردیم، و عمداً آزمایش‌های مربوط به تجربه توسعه‌دهنده را کنار گذاشتیم تا از اندازه‌گیری دو نتیجه غیرقابل مقایسه جلوگیری کنیم.

پس از ایجاد لیست تست، ما پیش رفتیم و یک اسکریپت ساخت برای هر ابزار نوشتیم تا بررسی کنیم که آیا ابزار می تواند معیارهای موفقیت آزمون را برآورده کند یا خیر. به عنوان مجموعه اولیه، تصمیم گرفتیم webpack v4، Rollup v2 و Parcel v2 را بررسی کنیم. ما همچنین Browserify + Gulp را آزمایش کردیم زیرا تعداد زیادی از پروژه ها هنوز از این تنظیمات استفاده می کنند. برای قبولی یک آزمایش، فقط ویژگی‌های مستند شده عمومی ابزار یا یک افزونه برای ابزار می‌تواند استفاده شود. پس از نگارش مجموعه اولیه تست‌ها، ما با نویسندگان ابزار ساخت کار کردیم تا مطمئن شویم که از ابزارهای آنها به درستی استفاده کرده‌ایم و آنها را به طور منصفانه نشان می‌دهیم.

تصویری از tooling.report.

ما فقط از ${tool_name} استفاده می‌کنیم، آیا باید همچنان برایم مهم باشد؟

در بسیاری از تیم‌ها، افرادی وجود دارند که به حفظ زیرساخت‌های ساخت اختصاص داده شده‌اند، و سایر اعضای تیم ممکن است هرگز انتخابی برای ساخت ابزار نداشته باشند. امیدواریم این سایت همچنان برای شما مفید باشد، زیرا راهی برای تعیین انتظارات از ابزارهایی که به آنها تکیه می کنید. برای هر آزمون، توضیحی در مورد اینکه چرا آزمون مهم است همراه با منابع اضافی قرار داده ایم. و اگر می‌خواهید بهترین روش را با ابزار انتخابی خود اتخاذ کنید، تنظیمات آزمایشی در مخزن ما حاوی فایل‌های پیکربندی لازم برای انجام این کار است.

آیا می توانم در سایت مشارکت کنم؟

اگر فکر می کنید ویژگی خاصی باید آزمایش شود که در حال حاضر وجود ندارد، لطفاً آن را در یک شماره GitHub برای شروع بحث پیشنهاد دهید . هدف ما محصور کردن موارد استفاده در دنیای واقعی است و هر آزمایش اضافی که این نتایج را بهتر ارزیابی کند، استقبال می‌شود.

اگر می خواهید برای ابزارهایی که در مجموعه اولیه قرار نداده ایم تست بنویسید، از آن نیز استقبال می کنیم! لطفاً برای اطلاعات بیشتر به CONTRIBUTING.md مراجعه کنید.