آموزش استفاده از Grunt برای مدیریت وظایف تکراری - Grunt (جلسه 30) - اجرای وظایف فقط برای فایلهای جدید

- visibility ۰ mode_comment

در این مطلب با ادامه آموزش Grunt در خدمتتون هستیم.

grund

در این جلسه قصد داریم در مورد پلاگین grunt-newer صحبت کنیم و با استفاده از اون کاری کنیم که وظایف مختلف، فقط برای فایلهای جدید اجرا بشن و لازم نباشه که همه فایلها در موقع اجرای وظایف دوباره عملیات روشون صورت بگیره. اگر فایل جدیدی رو اضافه کنید و یا فایلی رو تغییر بدین، وظایف میتونه برای اونا اجرا بشه و خروجی های مورد نظر ساخته بشه. همونطور که میدونید دو نمونه کلی وظیفه داریم. یک نمونه وظایفی هستن که ورودی و خروجی دارن مانند uglify و concat و ... و یک سری وظایف هم ورودی دارن اما خروجی اونا بصورت فایل نیس و فقط در cmd اطلاعاتی رو نمایش میدن. مثلا میشه csslint و jshint و ... رو جزء این دسته قرار داد. در ابتدا باید این پلاگین رو در پروژه خودمون نصب کنیم. برای اینکار عبارت زیر رو در cmd قرار میدیم:

بعد از اینکار اینتر میزنیم:grunt install newer

میبینید که این پلاگین بدون ارور درون پروژه ما نصب شده و حالا اگر package.json رو ببینید، بصورت زیر بروز رسانی شده:grunt install newer 2

حالا باید این بسته رو درون gruntfile.js لود کنیم:grunt install newer 3

این پلاگین فرقش با بقیه پلاگین ها اینه که خودش بصورت مستقل نیازی به ساخت وظیفه نداره و بصورت مکملی برای وظایف دیگه هست و با بقیه مورد استفاده قرار میگیره. ما در اینجا برای اینکه مثالی زده باشیم و شما رو با این پلاگین به خوبی آشنا کنیم، این ابزار رو به همراه دو تا از وظایفی که قبلا ساخته بودیم، مورد استفاده قرار میدیم. وظایفی که در اینجا مورد بررسی قرار میگیرن یکی jshint هست که فایل خروجی نداره و دیگری هم autoprefixer هست که هم ورودی داره و هم خروجی.

کارمون رو با وظیفه jshint شروع میکنیم. همونطور که در جلسه مربوط به jshint گفتم از این ابزار برای بررسی و عیب یابی کدهای Javascript استفاده میشه. همونطور که دیدید بررسی هامون رو بر روی فایل final.js انجام دادیم. برای اجرای jshint بر روی فایل مورد نظر، درون cmd عبارت grunt jshint رو تایپ میکنیم:run jshint

میبینید که نتایج مربوط به jshint نمایش داده شده. این چیزی بود که در جلسه های قبل بهش پرداخته بودیم. حالا اگر دستور بالا رو 1000 بار هم اجرا کنید و فایل final.js رو هم تغییر ندید، همیشه نتایج بالا نمایش داده میشه و کار تکراری انجام میشه. حالا شما میتونین با استفاده از newer کاری کنید که فقط بار اول نتایج نمایش داده بشه و تا زمانی که final.js رو تغییر ندادین، بررسی بر روی اون انجام نمیشه. برای اینکار به راحتی میتونین عبارت grunt newer:jshint رو تایپ کنید:run jshint newer

میبینید که دوباره jshint اجرا میشه و No problems رو نشون میده و به معنای اینه که مشکلی وجود نداره. حالا اگر تغییری در final.js بوجود نیاریم و مجددا عبارت بالا رو تایپ کرده و اینتر بزنیم، بصورت زیر خواهد شد:run jshint newer 2

همونطور که دیدید عبارت No newer files to process نمایش داده شده و به معنای اینه که فایل جدیدی برای انجام عملیات وجود ندارد. پس دیدید به چه راحتی میشه کاری کرد که عملیات مورد نظر شما فقط بر روی فایلهای جدید و یا تغییر یافته، انجام بشه. کار کردن با autoprefixer هم دقیقا شبیه به این مورد هست و برای استفاده از اون باید دستور grunt newer:autoprefixer رو اجرا کنید. همونطور که دقت کردید با اضافه کردن newer به اول هر وظیفه میتونین ویژگی بررسی بر روی فایلهای جدید رو به اون اضافه کنید. اون وظایفی که فقط ورودی دارن، فایل فعلی با آخرین باری که وظیفه مورد نظر اجرا شده، مقایسه میشه و اگر جدیدتر بود اجرا میشه. اما وظایفی که هم ورودی و هم خروجی دارن، اگر فایل ورودی از فایل خروجی جدیدتر بود، اونموقع جدید به حساب میاد و وظیفه مورد نظر بر روی اون اجرا میشه.

برای مطالعه بیشتر در مورد این ابزار به این لینک مراجعه کنید.

در جلسات بعدی بیشتر در مورد Grunt صحبت میکنیم.

امیدوارم از این جلسه خوشتون اومده باشه.

موفق باشید

یا علی

comment دیدگاه کاربران

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.