کدهای استفاده شده در روند تولید با کدهای توسعه تفاوت دارد. شما در مرحلهی تولید باید پکیجهایی با قابلیت اجرای سریع، مدیریت وابستگیها، اتوماتیک کردن کارها، بارگذاری ماژولهای خارجی و غیره را خلق کنید. به ابزارهایی که تبدیل کد توسعه به کد تولید را ممکن میکنند، ابزارهای ساخت و توسعه گفته میشود. معمولاً توسعهدهندگان Frontend از ابزارهای ذیل بیشتر استفاده میکنند:
- Package Managers
- Task Runners
- Module Loaders
- Module Bundlers
ما در این مقاله بهترین ابزارهای ساخت موجود در توسعه Frontend را جمعآوری کردهایم. این موضوع را در نظر داشته باشید که تمام این ابزارها در خط فرمان (command line) اجرا میشوند، به همین دلیل با رابط کاربری گرافیکی همراه نخواهند بود.
۱. NPM
NPM مخفف Node Package Manager بوده و یک package manager پیش فرض Node.js است. با نصب کردن Node.js روی سیستم، npm نیز به طور خودکار نصب میشود و میتوانید از طریق خط فرمان به آن دسترسی داشته باشید. شما با کمک npm میتوانید هر پکیج Node.js را تنها با یک دستور نصب کنید.
شما از طریق نوار جستجوی حاضر در بالای صفحه اصلی NPM، میتوانید به ریجیستری آن دسترسی پیدا کنید. در ریجیستری میتوانید تمام پکیجهای موجود Node.js را پیدا کنید. با نوشتن نام پکیج در بخش جستجو، به صفحهی موبوط به آن پکیج هدایت خواهید شد. در این صفحه اطلاعاتی دربارهی پکیج، فرآیند نصب و سایر موارد مربوط به آن توضیح داده شده است.
ویژگیهای کلیدی
- فرآیند نصب آسان
- نرمافزار کراس پلتفرم (Windows، Linux، macOS، SmartOS و موارد دیگر)
- صدها هزار پکیج
- مدیریت وابستگی موثر از طریق فایل package.json
- گزینههای مختلف پیکربندی (از طریق خط فرمان)
- مستندات گسترده و جامعهای پشتیبان
2. Yarn
Yarn یک package manager مربوط به Frontend است که میتواند جایگرین NPM شود. Yarn یک پکیج Node.js بوده و به همین دلیل قبل از استفاده از آن باید ابتدا Node.js را نصب کنید. سپس برای مدیریت کردن وابستگیهای Frontend خود، فقط باید راهنمای نصب آن را دنبال کنید.
NPM ابزاری فوقالعاده است اما گاهی اوقات ساخت پکیج به کمک آن میتواند مستلزم زمان زیادی باشد. اگر وابستگیهای زیادی برای نصب کردن ندارید، این موضوع دیگر یک مشکل محسوب نمیشود. با این حال اگر میخواهید کارهای سنگینی را انجام دهید، بهتر است به سراغ Yarn بروید چون سرعت بیشتری در ساخت دارد.
Yarn با کش کردن پکیجها، سرعت فرآیند ساخت را بالا میبرد. به همین دلیل شما دیگر مجبور نیستید وابستگیهای خود را دوباره دانلود کنید. این پکیج منیجر با اجرا کردن عملیاتهای موازی، زمان ساخت و توسعه را کاهش میدهد.
ویژگیهای کلیدی
- یک ابزار کراس پلتفرم (Windows، Linux و macOS) با راهنمای نصب جداگانه برای هر پلتفرم
- سازگار بودن با تمام پکیجهای Node.js
- زمان ساخت سریع
- امنیت بالا
- حالت آفلاین
- جلوگیری از ایجاد موارد تکراری
3. Grunt
Grunt یک task runner است که به شما امکان انجام کارهای تکراری مانند کوچکسازی، تست و غیره را خواهد داد. Task runner با Package manager تفاوت دارد چون نمیتوانید برای مدیریت وابستگیها از آن استفاده کنید. شما تنها برای انجام وظایف تکراری در روند ساخت به آنها نیاز پیدا خواهید کرد.
Grut یک پکیج Node.js است و شما میتوانید آن را با npm، Yarn یا سایر پکیج منیجرهای Node.js نصب کنید. Grut وابستگیهای سفارشی مورد نیاز برای انجام کارهای از پیش تعیین شده خود را در فایل package.json نگهداری میکند. شما میتوانید کارهای خود را در Gruntfile تعریف کنید. تمام کارهای ذکر شده در Gruntfile به طور خودکار در هر فرآیند ساخت و توسعه اجرا میشوند.
ویژگیهای کلیدی
- ابزاری کراس پلتفرم که روی هر سیستم عاملی اجرا میشود
- فرآیند پیکربندی ساده
- محیطی بزرگ با صدها پلاگین برای افزودن ابزارهایی جهت تکمیل کارهای از پیش تعیین شده
- انجام کارها به طور غیرهمزمان (در صورت لزوم)
- مستندات گسترده
4. Gulp
Gulp یک task runner اتوماتیک دیگر بوده که رقیب سرسخت Grunt است. میتوانید از Gulp نیز برای اتوماتیک کردن وظایف تکراری مانند پیشپردازش CSS، بهینهسازی تصاویر و بسیاری موارد دیگر استفاده کنید. این ابزار نیز یک پکیج Node.js بوده که میتوانید آن را با npm یا Yarn نصب کنید. شما میتوانید کارهای خود را در Gulpfile تعریف کرده و وابستگیهای مربوط به کارها را در فایل package.json قرار دهید.
بزرگترین تفاوت آن با Grunt این است که از تکنیکهای اتوماتیک کردن موثرتری استفاده میکند. این مسئله باعث سریعتر شدن زمان ساخت و توسعه میشود. Grunt برای پردازش کارها از فایلهای موقت استفاده میکند اما Gulp عملیاتهای درون حافظهای را بدون نوشتن در فایلهای موقت انجام میدهد. اگر بخواهید چندین کار را پردازش کنید، اینگونه عملیاتها میتوانند در زمان شما بسیار صرفهجویی کنند. ما به این عملیاتها Node streams میگوییم.
ویژگیهای کلیدی
- یک task runner کراس پلتفرم که میتواند در قالب یک پکیج Node.js نصب شود
- استفاده از Node streams برای سرعت بخشیدن به عملیاتها
- یک محیط بزرگ با هزاران پلاگین
- دارای یک کدبیس باکیفیت با استفاده از بهترین شیوههای Node.js
- مستندات آسان
5. Browserify
Browserify یک module loader است که به شما امکان Bundle کردن وابستگیهای Frontend را میدهد. با این کار میتوانید وابستگیهای باندل شده را در قالب یک فایل جاوااسکریپت در مرورگر کاربر بارگیری کنید. ابزارهایی مانند npm و Yarn، ماژولها را با استفاده از تابع require() در سمت سرور بارگیری میکنند. این در حالی است که Browserify متد require() را در سمت کلاینت فراهم میکند. این مسئله میتواند باعث عملکرد بهتر شود.
مرورگر کاربر شما با کمک این ابزار، فقط یک بار فایل استاتیک جاوااسکریپت که شامل تمام وابستگیهای لازم برای پروژه شماست را بارگیری میکند. میتوانید جاوااسکریپت باندل شده خود را به عنوان یک تگ <script> به صفحه اضافه کنید. توجه داشته باشید که Browserify یک ماژول Node.js بوده و شما تنها میتوانید از آن برای بارگیری ماژولهای Node.js استفاده کنید.
ویژگیهای کلیدی
- تمام وابستگیهای Node.js را درون یک فایل باندل میکند
- به برنامههای ماژولار متکی به چندین ماژول Node.js سرعت میبخشد
- استفاده از تقاضاهای خارجی را ممکن میسازد
- امکان تقسیم باندلها (در صورت لزوم)
- مستندات دقیق
6. Webpack
Webpack یک module bunlder پیشرفته است که به شما اجازه میدهد تا تمام وابستگیهای خود را باندل کرده و آنها را در قالب assetهای استاتیک در مرورگر کاربر بارگیری کنید. Browserify تنها میتواند ماژولهای Node.js را باندل کند اما Webpack توانایی باندل کردن تمام فایلهای frontend اعم از فایلهای JS، CSS، HTML، SCSS و غیره را دارد.
Webpack علاوه بر ماژولهای CommonJS استفاده شده در محیط Node.js میتواند ماژولهای AMD و ECMAScript بومی را هم باندل کند. این ابزار با آنالیز کردن پروژه شما یک نمودار وابستگی را میسازد. سپس فایلها و ماژولهای شما را براساس این نمودار در یک یا چند فایل استاتیک باندل میکند. حال میتوانید این فایلها را به صفحه HTML خود اضافه کنید.
از آنجایی که Webpack نیز یک ماژول Node.js است، میتوانید آن را با هر کدام از پکیج منیجرهای npm یا Yarn نصب کنید.
پیکربندی پروژههای Webpack به دلیل وجود گزینههای متعدد برای تنظیم پروژه، طول خواهد کشید. با این حال Webpack 4 دارای گزینه zero-configuration است که فرآیند ساخت و توسعه را به طور اتوماتیک انجام میدهد. در این مرحله فقط باید فایل ورودی را برای آن تعریف کنید.
ویژگیهای کلیدی
- گزینههای پیکربندی متعدد
- تقسیم کردن کد به بخشهای کوچکتر و بارگیری آنها به طور غیرهمزمان
- حذف کدهای مرده
- پشتیبانی از source map
- گزینه Zero-config (مختص Webpack 4)
- محیط گسترده با رابط پلاگین غنی
جمعبندی
ابزارهای ساخت و توسعه در Frontend به شما کمک میکنند تا کدهای توسعه خود را به کدهایی آماده برای تولید تبدیل کنید؛ کدهایی که بدون هیچ مشکلی روی هر دستگاه یا پلتفرمی اجرا میشوند. در این مجموعه بهترین ابزارهای ساخت را معرفی کردیم و شما میتوانید در پروژههای وب خود به راحتی از آنها استفاده کنید.
علاوه بر مواردی که در این مجموعه ذکر شد، ابزارهای جدیدی هم در بازار وجود دارد که دائما در حال رشد هستند. به عنوان مثال pnpm (جایگزینی برای npm و Yarn)، Parcel (جایگزینی برای Webpack)، Rollup ES (شبیه به Browserify بوده اما به جای CommonJS، ماژولهای ECMAScript را باندل میکند). اگر به دنبال راهکارهای جدیدتر هستید، این ابزارها قطعاً ارزش امتحان کردن را دارند.
با به کار بردن ابزارهای جدید در روند کاری خود میتوانید کارآمدتر به فعالیتهای توسعه ادامه دهید. برای بهبود بخشیدن به مهارتهای برنامهنویسیتان میتوانید مقالات موجود در سایت راکت را دنبال کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید