Homepage » Kit di strumenti » The Battle Of Build Scripts Gulp Vs Grunt

    The Battle Of Build Scripts Gulp Vs Grunt

    Ho già scritto su come iniziare con Gulp e su come iniziare con Grunt. Entrambi automatizzare i nostri compiti, entrambi usa il nodo, e entrambi ti richiedono di farlo creare attività e installare plug-in di qualche tipo. Ma ti chiedi della differenza tra i due, o anche, che è meglio?

    In questo articolo mi concentrerò principalmente su le differenze tra questi due progetti che può essere un fattore che ti aiuta a decidere quale dei due potresti ritenere migliore per te stesso. Userò del codice che potrebbe non essere familiare. Se lo è, suggerisco di leggere i due articoli precedentemente pubblicati prima di iniziare.

    Altro su Hongkiat.com

    • Come iniziare con Gulp
    • Come iniziare con Grunt

    Velocità

    La principale differenza tra Gulp e Grunt risiede in come si comportano con i loro compiti di automazione all'interno. Gulp usa gli stream dei nodi mentre Grunt usa i file temporanei. Mettiamolo in un inglese semplice, dobbiamo?

    Supponi di voler scrivere il codice SASS per il tuo progetto. Vorresti compilare il tuo codice SASS e quindi forse ridurlo.

    Grunt gestisce questo usando file intermediari quali sono operazioni di I / O su disco. Il tuo file SASS è compilato e quindi scritto in un file temporaneo. Il file temporaneo viene utilizzato dal prefisso autofilm e quindi il prodotto finale viene scritto nel file di destinazione.

    Gulp si prende cura di tutto questo in memoria. Il tuo file SASS sorgente è compilato, il risultato è passato al prefisso-autoprefixer senza essere scritto su un file e il file di destinazione viene quindi scritto.

    Rispetto alle operazioni in memoria, le scritture su disco sono lente, il che significa che Gulp ha un grande vantaggio di velocità (per adesso). Un confronto di velocità è stato fatto da tech.tmw che mostra che la maggior parte delle attività sono almeno due volte più veloci su Gulp. Anche se questo non è stato uno studio estremamente scientifico, la tendenza è lì e ho visto lo stesso con i miei progetti. Ma quanto è grande l'impatto della differenza di velocità?

    Differenza in secondi

    Per la maggior parte dei progetti questo non avrà importanza. La maggior parte dei progetti sono piccoli. Quando crei un tema WordPress o qualcosa di simile, il numero di file con cui devi lavorare è entro un limite ragionevole. Non importa se i tuoi fogli di stile sono compilati in 400ms o 800ms.

    Inoltre, la maggior parte dei progetti può essere strutturato in modo tale che alcuni dei problemi più intensi possano essere aggirati. Se disponi di 50 file SASS, puoi concatenarli altrettanto rapidamente durante lo sviluppo, non ci sarà bisogno di autoprefix o di ridimensionarli. Non è necessario ottimizzare le immagini ogni volta che si salva un progetto e così via.

    Anche quando hai davvero bisogno delle armi grandi perché stai spingendo il tuo lavoro su un server di staging o quando stai aggiornando un repository, un tempo costruito di 5 secondi o 9 secondi fa molta differenza?

    Per completare il tutto, Grunt aggiungerà il supporto per il piping nella prossima versione 0.5 che aumenterà notevolmente le cose, rendendo questo un punto controverso.

    La comunità

    Grunt è stato molto più a lungo di Gulp quindi ha una base di utenti significativa. Grunt attualmente riceve in media circa 37.000 download al giorno, Gulp ne guadagna un po 'più della metà, vicino ai 23.000. Detto questo, Gulp è stato in giro solo per un anno e mezzo, rendendo quel numero di tutto rispetto a dir poco.

    Grunt ha attualmente oltre 4000 plugin mentre Gulp ha più di 1200 plugin. Secondo le tendenze di Google, più persone cercano cose relative a Grunt, ci sono più forum che si occupano di esso e generalmente più supporto per la comunità.

    Ovviamente Gulp è in arrivo e questo significa che è così probabilità di pareggiare a lungo termine. Tuttavia, questo è un ostacolo per alcuni sviluppatori, specialmente quelli che lavorano su progetti basati su Grunt.

    Vorrei sottolineare che le comunità per entrambi sono estremamente bello. Per quanto posso dire, la relazione tra i leader di ogni comunità è sorprendente e dovrebbe servire da esempio a tutti. Il creatore di Gulp ha effettivamente aiutato lo scrittore del confronto dei test di velocità a migliorare le precisioni dei tempi che portano a una diminuzione delle differenze di tempo. Questo è quello che chiamo un gentiluomo!

    Configurazione del codice Vs

    Apparentemente questo è il punto di svolta per molti, ma ad essere onesti, non riesco a vedere il problema qui personalmente.

    L'argomento è così: Gulp è un buon esempio il codice sulla configurazione può essere una buona cosa quando la configurazione diventa un po 'confusa. Altre persone dicono che mentre questo è vero e Gulp è più facile leggere, è più difficile da Scrivi perché tubazioni può essere un po 'di confusione.

    Prima che io pesi, ecco lo stesso esempio prima in Grunt, poi in Gulp:

     grunt.initConfig (sass: dist: file: [src: 'dev / *. scss', dest: '.tmp / styles', espandi: true, ext: '.css'], autoprefixer : dist: file: [expand: true, cwd: '.tmp / styles', src: ', * / *. css', dest: 'css / styles'], guarda:  styles: files: ['dev / *. scss'], tasks: ['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');); ); 

    La mia opinione è che non importa davvero. Certo, se sei abituato al primo modo potresti aver bisogno di passare un po 'di tempo a capire il secondo, ma questo è anche vero viceversa. Quindi per me, il “è confusionario” l'argomento è completamente non valido. Qualunque il nuovo metodo che apprendi all'inizio è confuso, ma se si prende il tempo di capire la logica di ciascuno, tutto si uniforma.

    Detto questo, personalmente preferisco API di Gulp perché è pulitaer, e riflette il modo in cui penso più da vicino di Grunt. Questo è ovviamente completamente soggettivo e non è affatto un problema con Grunt, è solo una mia preferenza personale.

    Come scegliere

    Non penso ci sia alcuna domanda sul fatto che sia Grunt che Gulp sono strumenti eccezionali e hanno aiutato le persone a risparmiare innumerevoli ore di tempo nel corso degli anni. Grunt è un po 'più lento per ora, ma ha una comunità molto più grande. Gulp è più veloce, ha un'API più pulita, ma manca la base di utenti.

    Penso che alla fine la decisione verrà presa continuità, plugin disponibili e preferenza.

    (1) Se hai usato Grunt / Gulp per un po 'ora e ne sei felice, non c'è motivo di cambiare.

    (2) Se il tuo progetto richiede plug-in che non sono forniti da Gulp e non sei disposto a scriverne uno tu stesso, dovrai andare con Grunt.

    (3) Se le due considerazioni di cui sopra non si applicano a voi arriverà alla preferenza. Suggerisco di provare entrambi e vedere quale si attacca con te.

    Come ho detto, ho scelto di utilizzare Gulp perché mi piace la sua API più pulita, ma mi trovo perfettamente a mio agio nell'utilizzare Grunt se un progetto lo richiede. Cosa dovresti non si legge che Mr. Know-it-all ha detto che Gulp è migliore e lo accetta. Mentre ci sono differenze, non c'è un vincitore chiaro e entrambi i progetti possono coesistere e volontà. Provali e prendi una decisione.

    Nota: potresti anche prendere in considerazione opinioni di utenti come Keith Cirkel (un consulente Javascript) che ti consiglia di usare . Nella sua interessante Perchè dovremmo smettere di usare l'articolo di Grunt & Gulp, suggerisce di usare npm.

    Ulteriori letture

    Ci sono molti altri articoli eccellenti su questo argomento. Raccomanderei caldamente quanto segue per ulteriori letture; non fa mai male leggere ciò che gli altri hanno da dire!

    • Grunt vs Gulp - Beyond the Numbers (ringraziamenti speciali per gli esempi chiari)
    • Gulp, Grunt, Whatever
    • Scegli: Grunt, Gulp o npm?
    • Speedtesting Gulp and Grunt
    • Perché dovremmo smettere di usare Grunt & Gulp
    • Build Wars (usa le frecce per navigare)
    • Non c'è bisogno di Grunt, prendi un Sorso d'Aria Fresca