Slaget vid byggnadsskript Gulp Vs Grunt
Jag har redan skrivit om hur man kommer igång med Gulp, liksom hur man kommer igång med Grunt. De båda automatisera våra uppgifter, de båda använd nod, och de båda kräver dig att skapa uppgifter och installera plugins av något slag. Men undrar du skillnaden mellan de två, eller ens, vilket är bättre?
I denna artikel fokuserar jag huvudsakligen på skillnaderna mellan dessa två projekt vilket kan leda till att du bestämmer vilken av de två du kanske anser vara bättre för dig själv. Jag kommer att använda någon kod som kanske inte är känd. Om det är, föreslår jag att du läser igenom de två tidigare publicerade artiklarna innan du börjar.
Mer på Hongkiat.com
- Så här börjar du med Gulp
- Så här börjar du med Grunt
Fart
Huvudskillnaden mellan Gulp och Grunt ligger i hur de hanterar sina automationsuppgifter på insidan. Gulp använder Node-strömmar medan Grunt använder tempfiler. Låt oss sätta det på vanlig engelska, ska vi?
Antag att du skulle vilja skriva SASS-kod för ditt projekt. Du skulle vilja kompilera din SASS-kod och kanske kanske minska den.
Grunt hanterar detta med hjälp av mellanliggande filer vilka är disk-I / O-operationer. Din SASS-fil sammanställs och skrivs sedan till en temporär fil. Den tillfälliga filen används av autoprefixern och sedan skrivs slutprodukten till destinationsfilen.
Gulp tar hand om allt detta i minne. Din källsortfil sammanställs, resultatet överförs till autoprefixern utan att skrivas till en fil och destinationsfilen skrivs sedan ut.
Jämfört med in-memory-operationer, skriver skivan långsamt vilket betyder att Gulp har en stor hastighet fördel (tills vidare). En hastighetsjämförelse gjordes av tech.tmw som visar att de flesta uppgifterna är minst dubbelt så snabba på Gulp. Även om detta inte var en enorm vetenskaplig studie är tendensen där och jag har sett detsamma med mina egna projekt. Men hur stor påverkan är skillnaden i hastighet?
Skillnad i sekunder
För de flesta projekt spelar det ingen roll. De flesta projekt är små. När du skapar ett WordPress-tema eller något liknande, måste antalet filer du behöver arbeta med, ligga inom en rimlig gräns. Det spelar ingen roll om dina stylesheets sammanställs i 400ms eller 800ms.
Dessutom kan de flesta projekt vara strukturerade på ett sådant sätt att några av de mest intensiva frågorna kan sidestappas. Om du har 50 SASS-filer kan du lika snabbt sammanfoga dem under utveckling, det finns inte något behov av autoprefix eller minifiera dem. Du behöver inte optimera bilder varje gång du sparar ett projekt och så vidare.
Även när du verkligen behöver de stora pistolerna, eftersom du trycker på ditt arbete på en staging-server eller när du uppdaterar ett förråd, gör en inbyggd tid på 5 sekunder eller 9 sekunder mycket av en skillnad?
För att få det bästa av allt, kommer Grunt att lägga till stöd för piping i den kommande 0,5-utgåvan, vilket kommer att påskynda sakerna betydligt, vilket gör det till en bra punkt.
Samhället
Grunt har funnits mycket längre än Gulp så det har en betydande användarbas. Grunt får för närvarande cirka 37 000 nedladdningar per dag i genomsnitt, Gulp blir lite mer än hälften det, nära 23 000 mark. Med detta sagt har Gulp bara funnits i ett och ett halvt år, vilket gör det numret respektabelt minst sagt.
Grunt har för närvarande över 4000 plugins medan Gulp har mer än 1200 plugins. Enligt Google-trender söker fler personer efter Grunt-relaterade saker, det finns fler forum som hanterar det och generellt mer community support.
Självklart är Gulp upp och kommer vilket betyder att det här är sannolikt att jämnt ut på lång sikt. Detta är dock ett hinder för vissa utvecklare, särskilt de som arbetar med Grunt-baserade projekt.
Jag vill påpeka att samhällen för båda är extremt trevligt. Så långt jag kan berätta är förhållandet mellan ledarna i varje samhälle fantastiskt och bör tjäna som ett exempel för alla. Skaparen av Gulp som faktiskt hjälpte författaren av hastighetstest jämförelsen förbättrar timing noggrannhet som leder till en minskning av tidsskillnader. Det är vad jag kallar en gentleman!
Kod Vs-konfiguration
Tydligen är detta tipppunkten för många, men för att vara ärlig kan jag inte se problemet här personligen.
Argumentet går så här: Gulp är ett bra exempel på det kod över konfiguration kan vara bra när konfigurationen blir lite förvirrande. Andra säger att detta är sant och Gulp är lättare att läsa, det är svårare att skriva därför att rörsystem kan vara lite förvirrande.
Innan jag väger in, här är det samma exemplet först i Grunt, då i Gulp:
grunt.initConfig (sass: dist: filer: [src: 'dev / * .scss', dest: '.tmp / styles', expand: true, ext: '. css'], autoprefixer : dist: files: [expand: true, cwd: '.tmp / styles', src: ', * / *. css', dest: 'css / styles'] stilar: files: ['dev / *. scss'], uppgifter: ['sass: dist', 'autoprefixer: dist']); grunt.registerTask ('default', ['styles', 'watch']);
gulp.task ('sass', funktion () gulp.src ('dev / * .scss') .pipe (sass ()) .pipe (autoprefixer ()) .pipe (gulp.dest ('css / styles' ));); gulp.task ('default', funktion () gulp.run ('sass'); gulp.watch ('dev / * .scss', funktion () gulp.run ('sass');); );
Min åsikt är att det verkligen spelar ingen roll. Visst, om du är van vid den första vägen kan du behöva spendera lite tid att räkna ut den andra, men det här är sant vice versa också. Så för mig, “det är förvirrande” argumentet är helt ogiltigt. Några Ny metod du lär dig är förvirrande först, men om du tar dig tid att förstå logiken för varje, så kommer det hela ut.
Som sagt föredrar jag personligen Gulp API eftersom det är renter, och det återspeglar hur jag tänker närmare än Grunt. Det här är förstås helt subjektiv och är inte ett problem med Grunt alls, det är bara min personliga preferens.
Hur man väljer
Jag tror inte att det finns några frågor om att både Grunt och Gulp är bra verktyg och har hjälpt människor att spara otaliga timmar över tiden. Grunt är lite långsammare för nu, men har en mycket större gemenskap. Gulp är snabbare, har ett renare API, men saknar användarbasen.
Jag tror att beslutet i slutändan kommer att komma ner till kontinuitet, tillgängliga plugins och preferens.
(1) Om du har använt Grunt / Gulp ett tag nu och du är nöjd med det, Det finns ingen anledning att byta.
(2) Om ditt projekt kräver plugins som inte tillhandahålls av Gulp och du inte är beredd att skriva en själv, måste du gå med Grunt.
(3) Om ovanstående två överväganden inte gäller för dig kommer det att komma ner till preferensen. Jag föreslår prova både och se vilken sticks med dig.
Som jag sa valde jag att använda Gulp eftersom jag gillar sitt renare API bättre men jag är helt bekväm att använda Grunt om ett projekt kräver det. Vad du borde inte läs att Mr Know-it-all sa att Gulp är bättre och accepterar det. Medan det finns skillnader finns det ingen klar vinnare och båda projekten kan och kommer att existera tillsammans. Prova dem och ta upp ditt eget sinne.
Obs! Du kanske också vill överväga åsikter från användare som Keith Cirkel (en Javascript-konsult) som rekommenderar dig att använda varken. I hans intressanta Varför borde vi sluta använda Grunt & Gulp artikel, föreslår han att använda npm.
Vidare läsning
Det finns många andra utmärkta artiklar om detta ämne. Jag rekommenderar hjärtligt något av följande för vidare läsning; det gör aldrig ont för att läsa vad andra har att säga!
- Grunt vs Gulp - Beyond the Numbers (speciellt tack för de tydliga exemplen)
- Gulp, Grunt, vad som helst
- Välj: Grunt, Gulp eller npm?
- Speedtesting Gulp and Grunt
- Varför ska vi sluta använda Grunt & Gulp
- Bygg krig (använd pilar för att navigera)
- Inget behov av att Grunt, ta ett lust av frisk luft