معركة بناء البرامج النصية Gulp Vs Grunt
لقد كتبت بالفعل حول كيفية البدء في Gulp بالإضافة إلى كيفية البدء في Grunt. كلاهما أتمتة مهامنا, كلاهما استخدام العقدة, وكلاهما يتطلب منك إنشاء المهام وتثبيت الإضافات من نوع ما. لكن هل تتساءل عن الفرق بين الاثنين ، أو حتى ، أيهما أفضل?
في هذه المقالة سأركز بشكل رئيسي على الاختلافات بين هذين المشروعين مما قد يساعدك في تحديد أي من الاثنين قد تراه أفضل لك. سأستخدم بعض الرموز التي قد تكون غير مألوفة. إذا كان الأمر كذلك ، أقترح قراءة المقالات التي سبق نشرها قبل البدء.
أكثر على Hongkiat.com
- كيف تبدأ مع Gulp
- كيف تبدأ مع Grunt
سرعة
الفرق الرئيسي بين Gulp و Grunt يكمن في كيف يتعاملون مع مهام الأتمتة الخاصة بهم في الداخل. يستخدم Gulp تدفقات Node بينما يستخدم Grunt ملفات temp. دعونا نضع ذلك في اللغة الإنجليزية البسيطة ، هل نحن?
افترض أنك ترغب في كتابة كود SASS لمشروعك. قد ترغب في ترجمة رمز SASS الخاص بك ومن ثم ربما تصغيره.
نعمة يعالج هذا باستخدام ملفات وسيطة التي هي عمليات إدخال / إخراج القرص. يتم تجميع ملف SASS الخاص بك ثم كتابته إلى ملف مؤقت. يتم استخدام الملف المؤقت بواسطة الإصلاح التلقائي ثم يتم كتابة المنتج النهائي إلى الملف الوجهة.
غالب يعتني كل هذا في الذاكرة. يتم تجميع ملف SASS المصدر الخاص بك ، ويتم تمرير النتيجة إلى الإصلاح التلقائي دون كتابتها إلى ملف ثم يتم كتابة الملف الوجهة.
مقارنة بالعمليات في الذاكرة ، تكون عمليات كتابة القرص بطيئة مما يعني ذلك Gulp لديه ميزة سرعة كبيرة (الى الان). تم إجراء مقارنة سرعة بواسطة tech.tmw التي توضح أن معظم المهام تكون أسرع مرتين على الأقل في Gulp. في حين أن هذه لم تكن دراسة علمية هائلة ، إلا أن الاتجاه موجود ورأيت الشيء نفسه في مشاريعي الخاصة. ولكن ما مدى تأثير الفرق في السرعة?
الفرق في ثوان
بالنسبة لمعظم المشاريع ، فإن هذا لن يهم. معظم المشاريع صغيرة. عندما تقوم بإنشاء سمة WordPress أو شيء مشابه ، فإن عدد الملفات التي تحتاج إلى العمل بها يكون ضمن حدود معقولة. لا يهم حقًا ما إذا تم تجميع أوراق الأنماط الخاصة بك في 400ms أو 800ms.
علاوة على ذلك ، يمكن أن تكون معظم المشاريع منظم بطريقة يمكن تجنبها من أكثر القضايا كثافة. إذا كان لديك 50 ملفًا من ملفات SASS ، يمكنك توصيلها بالسرعة نفسها أثناء التطوير ، ولن تكون هناك حاجة إلى الإصلاح التلقائي أو تصغيرها. لن تحتاج إلى تحسين الصور في كل مرة تقوم فيها بحفظ مشروع ، وما إلى ذلك.
حتى عندما تحتاج حقًا إلى الأسلحة الكبيرة لأنك تضغط على عملك على خادم مرحلي أو عندما تقوم بتحديث مستودع ، فهل يحدث وقت مدته 5 ثوانٍ أو 9 ثوان فرقًا كبيرًا?
إضافة إلى ذلك ، ستضيف Grunt دعمًا للأنابيب في الإصدار 0.5 القادم الذي سيعمل على تسريع الأمور إلى حد كبير ، مما يجعل هذه النقطة نقطة نقاش.
المجتمع
لقد كان Grunt أطول بكثير من Gulp ، لذا فهو يمتلك قاعدة مستخدم كبيرة. يتلقى Grunt حاليًا حوالي 37000 عملية تنزيل يوميًا في المتوسط ، ويحصل Gulp على أكثر قليلاً من نصف ذلك ، بالقرب من علامة 23000. ومع ذلك ، فإن Gulp كانت موجودة منذ عام ونصف فقط ، مما يجعل هذا الرقم محترمًا على أقل تقدير.
يحتوي Grunt حاليًا على أكثر من 4000 مكون إضافي بينما يحتوي Gulp على أكثر من 1200 مكون إضافي. وفقًا لاتجاهات Google ، يبحث المزيد من الأشخاص عن الأشياء ذات الصلة بـ Grunt ، وهناك المزيد من المنتديات التي تتعامل معها ، وبشكل عام المزيد من دعم المجتمع.
بالطبع غالب صعودا والقادمة وهو ما يعني هذا من المرجح أن حتى في المدى الطويل. ومع ذلك ، يعد هذا عائقًا أمام بعض المطورين ، خاصة أولئك الذين يعملون في المشروعات القائمة على Grunt.
أود أن أشير إلى أن المجتمعات لكليهما هي لطيفة للغاية. بقدر ما أستطيع أن أقول أن العلاقة بين القادة في كل مجتمع مدهشة ، وينبغي أن تكون مثالاً للجميع. ساعد مُبدع Gulp في الواقع كاتب مقارنة اختبار السرعة على تحسين دقة التوقيت التي تؤدي إلى انخفاض في الفوارق الزمنية. هذا ما أسميه رجل نبيل!
كود مقابل التكوين
يبدو أن هذه هي نقطة التحول بالنسبة للكثيرين ، ولكن بصراحة ، لا أستطيع رؤية المشكلة هنا شخصيًا.
الحجة تسير على هذا النحو: قولب مثال جيد على ذلك يمكن أن يكون الشفرة عبر التكوين أمرًا جيدًا عندما يصبح التكوين مربكًا بعض الشيء. يقول أشخاص آخرون أنه في حين أن هذا صحيح و Gulp أسهل اقرأ, هو أكثر صعوبة ل اكتب لان الأنابيب يمكن أن يكون مربكا بعض الشيء.
قبل أن أثقل ، إليك نفس المثال أولاً في Grunt ، ثم في Gulp:
grunt.initConfig (sass: dist: files: [src: 'dev / *. scss'، dest: '.tmp / styles' ، expand: true ، ext: '.css'] ، التصحيح التلقائي : dist: files: [expand: true، cwd: '.tmp / styles'، src: '، * / *. css'، dest: 'css / styles']، watch: الأنماط: files: ['dev / *. scss'] ، المهام: ['sass: dist' ، 'autoprefixer: dist'])؛ grunt.registerTask ('default'، ['styles'، 'watch'])؛
gulp.task ('sass' ، function () gulp.src ('dev / *. scss') .pipe (sass ()) .pipe (autoprefixer ()) .pipe (gulp.dest ('css / styles' )) ؛) ؛ gulp.task ('default'، function () gulp.run ('sass')؛ gulp.watch ('dev / *. scss'، function () gulp.run ('sass')؛)؛ )؛
رأيي هو أنه حقا لا يهم. بالتأكيد ، إذا كنت معتادًا على الطريقة الأولى ، فقد تحتاج إلى قضاء بعض الوقت في التعرف على الطريقة الثانية ، ولكن هذا صحيح أيضًا. لذلك بالنسبة لي ، و “انه مربك” حجة غير صالحة تماما. أي الطريقة الجديدة التي تتعلمها مربكة في البداية, ولكن إذا كنت تأخذ الوقت الكافي لفهم منطق كل منها ، فإن كل ذلك يتحقق.
قال ذلك ، أنا شخصيا أفضل واجهة برمجة تطبيقات Gulp لأنها نظيفةإيه ، وهذا يعكس الطريقة التي أعتقد بها عن كثب أكثر من جرونت. هذا بالطبع ذاتية تماما وليست مشكلة مع Grunt على الإطلاق ، إنها مجرد تفضيل شخصي لي.
كيفة تختار
لا أعتقد أن هناك أي سؤال حول حقيقة أن كلا من Grunt و Gulp هما أداتان رائعتان وقد ساعدتا الناس على توفير ساعات لا تحصى من الوقت على مر السنين. جرونت أبطأ قليلاً في الوقت الحالي ، ولكن لديه مجتمع أكبر بكثير. Gulp أسرع ، وله واجهة برمجة تطبيقات أنظف ، لكنه يفتقر إلى قاعدة المستخدمين.
أعتقد أن القرار سيأتي في النهاية إلى الاستمرارية ، الإضافات المتاحة و تفضيل.
(1) إذا كنت تستخدم Grunt / Gulp لفترة من الوقت الآن و أنت سعيد به, ليس هناك سبب للتبديل.
(2) إذا كان المشروع الخاص بك يتطلب الإضافات التي لا تقدمها Gulp وأنت غير مستعد لكتابة واحدة بنفسك ، سوف تحتاج إلى الذهاب مع Grunt.
(3) إذا لم يتم تطبيق الاعتبارين المذكورين أعلاه ، فسوف ينخفض هذا التفضيل. أقترح محاولة الخروج على حد سواء ورؤية أي واحد العصي معك.
كما قلت ، اخترت استخدام Gulp لأنني أحب API النظيف لها بشكل أفضل لكنني مرتاح تمامًا لاستخدام Grunt إذا كان هناك مشروع يستدعي ذلك. ما يجب عليك ليس هل قراءة أن السيد Know-it-all قال إن Gulp أفضل وقبولها. في حين أن هناك اختلافات ، لا يوجد فائز واضح و كلا المشروعين يمكن ، وسوف ، تتعايش. جربهم وقرر عقلك.
ملاحظة: قد ترغب أيضًا في التفكير في آراء من المستخدمين مثل Keith Cirkel (مستشار Javascript) الذي ينصح باستخدام لا هذا ولا ذاك. في كتابه "لماذا يجب أن نتوقف عن استخدام مقالة Grunt & Gulp" ، يقترح استخدام npm.
قراءة متعمقة
هناك العديد من المقالات الممتازة الأخرى حول هذا الموضوع. أوصي بحرارة بأي مما يلي لمزيد من القراءة ؛ لا يضر أبداً بقراءة ما يقوله الآخرون!
- Grunt vs Gulp - Beyond the Numbers (شكر خاص على الأمثلة الواضحة)
- غلب ، نخر ، أيا كان
- اختيار: النخر ، غلب أو npm?
- Speedtesting Gulp و Grunt
- لماذا يجب أن نتوقف عن استخدام Grunt & Gulp
- بناء الحروب (استخدم الأسهم للتنقل)
- لا حاجة لنخر ، خذ من الهواء النقي