
En la tierra de JavaScript, las cosas se mueven rápidamente, y la tecnología avanza a un ritmo loco. La mayoría de las aplicaciones modernas se construyen utilizando tecnologías como Vue.js y React, utilizando módulos como Webpack. Tenemos una serie completa sobre cómo desarrollar un complemento de WordPress usando Webpack & React. Webpack le hace mucho y trata sobre cosas como la agrupación, la minería y los mapas de origen (o mediante el uso de complementos), haciendo redundantes que funcionan antiguos y tragan. O eso podrías creer. En realidad, sin embargo, muchos proyectos no requieren módulos completos como Webpack, pero aún necesitan una forma de compilar sus activos front-end. Webpack no ha sido diseñado para ser una silla de ruedas de tareas y, por lo tanto, no es fácil configurarlo para crear activos sin combinar módulos. Por lo tanto, correr corredores como Primer y Gulp tienen su lugar y todavía usamos ambos aquí, con deliciosos cerebros, como herramientas de construcción para diferentes productos que desarrollamos.
En este artículo, echaremos un vistazo tanto al imprimador como al trago para ver cuáles son las diferencias entre ellos y analizar las ventajas y desventajas de usar cada una de las cuales como herramienta de construcción para los activos frontales. Gulp vs Grurt: ¿Qué son diferentes? Antes de ver cómo estas herramientas de compilación son diferentes, vale la pena señalar que ambos están diseñados para hacer lo mismo: automatizar las tareas que de otro modo debería hacer. Estas tareas pueden incluir:
COMPILACIÓN MENOS/SASS en CSS
Concatenación y minimización de CSS y JavaScript
Código de Scame
Optimización de la imaginación de pruebas unitarias
Mucho más…
Ambas herramientas lo ayudarán a automatizar la compilación de sus activos front-end y hará que sus construcciones sean más consistentes y confiables, principalmente mediante el uso de los complementos aportados por la comunidad. Al momento de escribir este artículo, el registro de complementos Primer contenía 6,250 complementos, mientras que el registro de complementos Gulp contenía más de 4000 complementos diferentes. Una cantidad considerable para los dos, aunque principalmente se hace cargo aquí.
¿Cómo trabajas Primer y Gulp? El orgullo funciona definiendo tareas en un archivo llamado grurtfile.js, estructurado de una manera muy similar a JSON. Puede especificar la configuración para cada tarea y el cebador los ejecutará en la secuencia. Este archivo es fácil de leer y comprender, lo que hace que la imprimación sea probablemente la más intuitiva de las dos herramientas de compilación. Gulp, por otro lado, se centra en el principio “código sobre la configuración” al hacer que cada definición del embarazo sea una función JavaScript declarada en un archivo llamado gulpFile.js. El código Gulp a menudo es mucho más corto que el de Orgullo, porque no hay configuración involucrada (aunque las funciones normalmente pueden tomar valores de configuración). Luego puede encadenar las funciones juntas, que se ejecutan en paralelo o en serie, para crear el script de construcción.
Una gran ventaja es que Gulp puede usar flujos de nodos, lo que significa que Gulp no tiene que escribir archivos de disco intermedios. El resultado es que Gulp suele ser mucho más rápido que la imprimación, aunque puede tener una curva de aprendizaje ligeramente pronunciada debido al uso de flujos y promesas. Construir los scripts más simples para comparar cebador con Gulp es crear el mismo script de compilación utilizando cada herramienta y comparar los archivos de configuración y rendimiento. Así que hagamos eso. Crearemos un Primfile.js y un gulpfile.js que hagan lo siguiente: compilar el archivo sass en CSS
Concatena y reducir CSS y JavaScript
Optimizar las imágenes
Antes de comenzar los pasos para crear archivos de compilación, debo señalar que hemos creado un depósito de GitHub como una demostración de lo que probamos aquí, con todos los archivos necesarios y algo demostrativo, si desea verificarlo. En primer lugar, asegúrese de que tengamos instalados Primer y Gulp CLI en nuestro automóvil, para que podamos ejecutarlos: NPM Install -G Gunt-CLI Gulp-CLI, para instalar los paquetes que necesitamos para que se ejecute la imprimación y el trago. Puede hacer esto manualmente ejecutando NPM Install {PACECK} -Save-Dev o Package.json Package.json desde el almacén y ejecutando solo NPM Install:
{“Nombre”: “Grunt-VS-Gug”, “Versión”: “1.0.1”, “Devdependencies”: {“Grunt”: “^1.1.0”, “Grunt-Contrib-Coccat”: “^1.0 .1 “,” Grunt-Contrib-Cssmin “:”^3.0.0 “,” Grunt-Contrib-imagemin “:”^4.0.0 “,” Grunt-Contrib-Guglify “:”^4.0.1 “,”, “,”, “,” Grunt-Sass “:”^3.1.0 “,” Gulp “:”^4.0.2 “,” Gulp-Clean-CSS “:”^4.3.0 “,” Gulp-Conccat “:”^2.6.1 ” , “Gulp-Imagemin”: “^7.1.0”, “Gulp-Sass”: “^4.1.0”, “Gulp-States”: “0.0.4”, “Gulp -uglify”: “^3.0.2 “,” Nodo-sass “:”^4.14.1 “,” gruñido de tiempo “:”^2.0.0 “}} Para cebador, debemos crear un primfile.js en la raíz de nuestro proyecto.Se ve como esto:
módulo.exports = function (prim) {const sass = reequire (‘node -ass’); Const mozjpeg = request (‘imagemin-mozjpeg’); Requiere (‘gruint de tiempo’) (grurt); Grunt.itinconfig ({sass: {opciones: {implementación: sass}, dist: {archivos: {‘distal/css/style.css’: ‘assets/scss/style.scss’}}, conquistado: {css: { Archivos: {‘Distinte/css/style.css’: [‘distribuir/css/style.css’, ‘assets/css/test.css’,}, js: {archivos: {‘distinción/js/scripts.js ‘: [‘ evaluar/js/test. {‘Dist-crut/css/styles.min.css’: [‘distribuir/css/style.css’]}}, Uglify: {dist: {archivos: {‘dista -frut/js/script. min.js ‘: [‘ distinción/js/scripts.js ‘]}}, imagemin: {Dynamic: {Opciones: {OptimizationLevel: 5, use: [mozjpeg ()], archivos: [ {expandir: true, cwd: ‘assets/img/’, src: [‘**/*. {png, jpg, gif}’, des: ‘distinguish/img’}]}}); Prim.LoadnpmTasks (‘Grunt-Sass’); Grunt.loadnpmtasks (‘Grunt-Contrib-Conccat’); Grurt.LoadnpmTasks (‘Grunt-Contrib-Cssmin’); Grunt.loadnpmtasks (‘Grunt-Contrib-Guglify’); Grurt.LoadnpmTasks (‘Grunt-Contrib-imagemin’); Grurt.regotastask (‘predeterminado’, [‘sass’, ‘concat’, ‘cssmin’, ‘uglify’, ‘imagemin’); }; Como puede ver, la configuración de tareas de cebadores no es muy expresiva, pero es bastante fácil de entender. Además, debido a que el orgullo ejecuta tareas en una secuencia, podemos hacer suposiciones seguras sobre cosas como los archivos disponibles (por ejemplo, se ha compilado Distintive/CSS/style.css antes de ejecutar la carga).
Ahora, para Gulp, tenemos que crear un GulpFile.js en la raíz de nuestro proyecto. Parece esto: const gulp = reequire (‘gulp’); const sass = reequire (‘gulp-sass’); consctCat = reequire (‘gulp-conccat’); Const cleanCSS = request (‘Gulp-Clean-CSS’); Const uglify = require (‘gulp-guglify’); const imagemin = reequire (‘gulp-imagemin’); sass.compiler = reequire (‘node-sass’); Función scss () {return gulp.src (‘assets/scss/**/*. Scss’) .pipe (sass () en (‘error’, sass.logerror) .pipe (gulp.dest (‘distin -gulp /css ‘)); } Function css () {return gulp.src ([‘distalp/css/style.css’, ‘activos/css/test.css’) .pipe (conquistado (style.css). Gulp.dest (‘distalp/csss ‘)) .Pipe (conquistado (‘ style.min.css ‘)) .pipe (clencss ()) .pipe (gulp.dest (‘ distalp/css)); } Function js () {return gulp.src (‘assets/js/**/*. Js’) .pipe (conquistado (‘scrips.min.js’)) .pipe (uglify ()) .pipe (gulp. Des (‘distalp/js’)); } Function img () {return gulp.src (‘assets/img/*’) .pipe (imagemin ([imagemin.mozjpeg ({optimizationLevel: 5})). Soy g ‘)); } Exports.default = gulp.prallel (gulp.series (SCSS, CSS), JS, IMG); Como puede ver, es mucho más expresivo y nos permite agrupar las cosas de una manera más lógica (por ejemplo, agrupar todas las tareas relacionadas con CSS/JS). Además, debido a la implementación de flujos de Gulp, cada tarea se puede rodar en paralelo, que es parte de los cuales es mucho más rápido que el imprimador.
Sin embargo, debe tener cuidado con esto, porque debe asegurarse de no romper ninguna cadena de adicciones. Para evitar esto, puede definir tareas que se ejecutan en serie, como lo hemos hecho con las tareas SCSS y CSS. Al hacer esto, podemos estar seguros de que el distalp/css/style.css ya está compilado cuando la tarea CSS la necesita. Rendimiento, por lo tanto, ahora que tenemos ambos scripts de compilación en funcionamiento, ¿cómo funciona realmente? Cebado

Tareas de pricte: 1.6 segundos
Tareas de trago: 0.84 segundos

Estos resultados no son sorprendentes (cómo esperábamos que Gulp fuera más rápido), pero muestran qué tan rápido es Gulp sobre el manual.

En un pequeño proyecto como el nuestro, una diferencia de ~ 800 milisegundos puede no ser un gran problema. Sin embargo, para proyectos más grandes, esta diferencia de velocidad se multiplica y un imprimador puede ser mucho, mucho más lento. Veredicto Entonces, ¿debería usar imprimación o trago? Como con todas estas cosas, no hay una respuesta “correcta” o “incorrecta”, realmente se reduce a las preferencias personales. Depende del contexto y con lo que te sientas cómodo. Como resumen, aquí hay algunos pros y contras para cada instrumento: Grunt Pro
Fácil de aprender y configurar
Comunidad madura con muchos complementos
Versus
Puede volverse frágil para proyectos más grandes
Más lento que el trago
Pro
Mucho más rápido debido al uso de flujos
Más flexible debido a la naturaleza expresiva
Versus
Curva de aprendizaje de Roder
Gunt vs Gulp: Battle of the Build Tools
Tags Gunt vs Gulp: Battle of the Build Tools
homefinance blog