آنچه در این صفحه می خوانید:
- گرانت (Grunt) چیست؟
- مزایا و معایب استفاده از گرانت (Grunt)
- پلاگین های گرانت (Grunt)
- ویژگی های گرانت (Grunt)
- مفاهیم پایه گرانت (Grunt)
- مثال گرانت (Grunt)
گرانت (Grunt) چیست؟
Grunt یک Task runner جاوااسکریپ است،ابزاری که برای انجام خودکار کارهای مکرر مانند کوچک سازی، تلفیق، تست واحد و Linting استفاده می شود. گرانت از یک رابط خط فرمان برای اجرای کارهای سفارشی تعریف شده در یک فایل معروف به Gruntfile استفاده می کند. گرانت توسط Ben Alman ایجاد شده و در نود جی اس (Node.js) نوشته شده است و از طریق ان پی ام (npm) توزیع می شود. از سپتامبر 2016،بیش از 5000 پلاگین در اکوسیستم Grunt موجود است.
در ابتدا توسط Ben Alman در سال 2012 به عنوان یک جایگزین کارآمد برای ساده سازی نوشتن و حفظ مجموعه ای از کارهای فرآیند ساخت جاوااسکریپت در یک فایل عظیم ایجاد شد. این پروژه به عنوان ابزاری برای ساخت خط فرمان task-based برای پروژه های جاوااسکریپت طراحی شده است.
گرانت در درجه اول برای خودکارسازی کارهایی انجام می شود که باید به طور معمول و مکرر انجام شوند. هزاران پلاگین وجود دارد که می توانند مستقیماً برای انجام برخی کارهای متداول نصب و استفاده شوند. یكی از مطلوب ترین ویژگی های Grunt این است كه بسیار قابل تنظیم است یعنی به برنامه نویسان اجازه می دهد تا متناسب با نیازهای شخصی خود،كارهای دلخواه را اضافه كنند،گسترش دهند و تغییر دهند. هر کار مجموعه ای از گزینه های پیکربندی دارد که می تواند توسط کاربر تنظیم شود. علاوه بر این،Grunt امکان تعریف وظایف سفارشی را فراهم می کند،که می تواند چندین کار موجود را با یک کار واحد ترکیب کند و یا عملکردهای کاملاً جدیدی را اضافه کند. شرکت هایی که از Grunt استفاده می کنند شامل Adobe Systems،jQuery،Twitter،Mozilla،Bootstrap،Cloudant،Opera،WordPress،Walmart و Microsoft هستند.
مزایا و معایب استفاده از گرانت (Grunt)
موارد زیر برخی از مزایای استفاده از گرانت است:
- کلیه task runner ها دارای ویژگی های قوام، اثربخشی، کارایی، تکرارپذیری و غیره هستند.
- دسترسی به بسیاری از افزونه های از پیش تعریف شده که می توانند برای کار با task های جاوااسکریپت و محتوای استاتیک استفاده شوند.
- به کاربران اجازه می دهد تا کارها را با استفاده از افزونه های از پیش تعریف شده سفارشی کنند.
- رویکرد پیکربندی کدگذاری را ترجیح می دهد.
- به کاربران اجازه می دهد افزونه های خود را اضافه کنند و آنها را در npm منتشر کنند.
موارد زیر معایب گرانت هستند:
- هرگاه بسته های npm به روز می شوند،باید منتظر بمانید تا زمانی که نویسنده Grunt آن را به روزرسانی کند.
- هر task برای انجام کاری مشخص طراحی شده است. اگر می خواهید یک کار مشخص را گسترش دهید،برای انجام کار باید از برخی ترفندها استفاده کنید.
- Grunt شامل تعداد زیادی پارامترهای پیکربندی برای پلاگین های فردی می شود. معمولا،فایل های پیکربندی Grunt طولانی تر هستند.
چرا از Grunt استفاده کنیم؟
- Grunt می تواند تسک تکراری را به راحتی انجام دهد مانند تدوین، تست واحد، حذف فایل ها، اجرای تست ها و غیره.
- Grunt شامل وظایف داخلی است که قابلیت پلاگین ها و اسکریپت های شما را گسترش می دهد.
- Grunt گردش کارهای توسعه دهندگان وب را یکپارچه می سازد.
- اکوسیستم Grunt بزرگ است؛ شما می توانید هر چیزی را با تلاش بسیار کم انجام دهید.
- سرعت گردش کار توسعه را افزایش می دهد و عملکرد پروژه ها را افزایش می دهد.
پلاگین های گرانت (Grunt)
افزونه ها کدهای قابل استفاده مجدد هستند که مجموعه ای از کارها را تعریف می کنند. هر افزونه در داخل حاوی یک دایرکتوری وظایف با فایل های جاوااسکریپت است که دارای نحو مشابه Gruntfile هستند. اکثر افزونه های Grunt با کلید واژه gruntplugin در npm منتشر می شوند و با grunt پیشوند دارند. این به Grunt کمک می کند تا تمام افزونه های موجود در لیست افزونه های Grunt را نشان دهد. افزونه هایی که به طور رسمی توسط Grunt پشتیبانی می شوند با پیشوند grunt-contrib و همچنین با یک نماد ستاره در لیست افزونه ها مشخص شده اند.
برخی از افزونه های معروف شامل grunt-sharing-watch،grunt-contrib-clean،grunt-contrib-uglify و غیره است. توسعه دهندگان حتی می توانند افزونه های Grunt خود را با استفاده از افزونه grunt-init ایجاد کرده و با استفاده از دستور npm Publishing آنها را در npm منتشر کنند.
ویژگی های گرانت (Grunt)
- Grunt سبب ساده سازی گردش کار همانند راحتی نوشتن یک فایل راه اندازی می شود.
- شما می توانید تسک های تکراری را با حداقل تلاش انجام دهید.
- Grunt یک task runner محبوب مبتنی بر NodeJS است. انعطاف پذیر می باشد و به طور گسترده ای استفاده می شود.
- این یک رویکرد ساده است که شامل تسک ها در JS و پیکربندی در جی سان (JSON) است.
- Grunt جاوا اسکریپت،فایل های سی اس اس (CSS)، فایل های تست، کامپایل فایل های پیش پردازنده (SASS, LESS) و غیره را کاهش می دهد.
- Grunt شامل تسک های داخلی است که قابلیت پلاگین ها و اسکریپت های شما را گسترش می دهد.
- سرعت گردش کار توسعه و عملکرد پروژه ها را افزایش می دهد.
- شما به راحتی می توانید با یک کد جدید با استفاده از Grunt کار کنید زیرا دارای زیرساخت کمتر است.
- اکوسیستم گرانت بزرگ است؛ شما می توانید هر چیزی را با تلاش بسیار کم انجام دهید.
- گرانت احتمال اشتباه در انجام تسک های تکراری را کاهش می دهد.
- گرانت در حال حاضر بیش از 4000 پلاگین دارد
- می توان در سایت های تولید بزرگ استفاده کرد.
مفاهیم پایه گرانت (Grunt)
رابط خط فرمان
رابط خط فرمان Grunt (CLI) را می توان در سراسر جهان از طریق npm نصب کرد. با اجرای دستور grunt،نسخه Grunt که به طور محلی در فهرست فعلی نصب شده است بارگذاری و اجرا می شود. از این رو،می توانیم نسخه های مختلف Grunt را در پوشه های مختلف حفظ کرده و هر یک را مطابق میل خود اجرا کنیم.
فایل ها
برای استفاده از Grunt در یک پروژه،باید دو فایل خاص در فهرست اصلی ایجاد شود: pack.json و Gruntfile
- pack.json: شامل ابرداده برای پروژه شامل نام،نسخه،توضیحات،نویسندگان،مجوزها و وابستگی های آن (پلاگین های Grunt مورد نیاز پروژه). تمام وابستگی ها یا در قسمت وابستگی ها یا بخش وابستگی وابسته ذکر شده اند.
- Gruntfile: یک فایل جاوا اسکریپت یا کافی اسکریپت (CoffeeScript) معتبر به نام "Gruntfile.js" یا "Gruntfile.coffee" است که حاوی کد برای پیکربندی وظایف،بارگذاری افزونه های موجود و یا ایجاد کارهای سفارشی است.
وظایف
Taskها ماژول هایی هستند که یک کار مشخص را انجام می دهند. آنها در Gruntfile تعریف شده اند. توسعه دهندگان می توانند وظایف از پیش تعریف شده را از افزونه های موجود Grunt بارگیری کنند و یا کد سفارشی بنویسند تا بسته به نیازشان وظایف خود را تعریف کنند. پس از تعریف،این وظایف را می توان با اجرای ساده grunt <taskname> از خط فرمان اجرا کرد. اگر<taskname> در Gruntfile به صورت پیش فرض تعریف شده باشد،اجرای ساده grunt کافی خواهد بود.
نصب و راه اندازی
گرانت و افزونه های آن از طریق npm مدیر بسته Node.js نصب و مدیریت می شوند. Grunt 0.4.x به نسخه های Node.js پایدار 0.8.0 به بالا نیاز دارد. قبل از تنظیم گرانت با اجرای npm update -g npm از بروز بودن npm اطمینان حاصل کنید (این ممکن است در برخی سیستم های خاص به sudo نیاز داشته باشد).
نصب CLI
برای شروع کار،رابط خط فرمان Grunt (CLI) را در سطح کلی یا globally نصب کنید. برای انجام این کار ممکن است نیاز به استفاده از sudo برای OSX،* nix،BSD و غیره داشته باشید و یا پوسته فرمان خود را به عنوان Administrator (برای ویندوز) اجرا کنید.
npm install -g grunt-cli
توجه داشته باشید که نصب grunt-cli،نصبtask runner گرانت را ندارد! کار Grunt CLI ساده است: نسخه Grunt را که در کنار Gruntfile نصب شده اجرا می کند. این اجازه می دهد تا چندین نسخه از Grunt به طور همزمان بر روی یک دستگاه نصب شود.
مثال گرانت (Grunt)
در زیر نمونه ای از Gruntfile نوشته شده در JavaScript است که نحوه بارگیری افزونه ها، ایجاد کارهای سفارشی و پیکربندی آنها را نشان می دهد:
module.exports = function(grunt) {
// Task configuration
grunt.initConfig({
taskName1: 'Task1 Configuration',
taskName2: 'Task2 Configuration'
});
// Loads plugins
grunt.loadNpmTasks('pluginName1');
grunt.loadNpmTasks('pluginName2');
// Custom tasks
grunt.registerTask('customTaskName1', 'Custom task description', function(taskParameter) {
// Custom statements
});
// Combining multiple tasks to a single task
grunt.registerTask('customTaskName2', ['taskName1', 'customTaskName1']);
// Default task - runs if task name is not specified
grunt.registerTask('default', ['customTaskName2']);
};
در مثال بالا، دستور grunt، المان <customtaskName2>
را اجرا می کند که در بالا به عنوان ترکیبی از هر دو <taskName1>
و <customTaskName1>
تعریف شده است.