javascript - node - que es gulp
¿Para qué sirve Grunt? (2)
Estoy tratando de entrar en Grunt, que soy nuevo, pero no entiendo su utilidad.
Entiendo que es un corredor de tareas. Entiendo que se puede usar para hacer cosas como bundle, uglify, jshint, minify, etc., etc., cualquier cosa que se pueda convertir en una tarea programada.
Pero no veo qué ventaja da esto. Casi todos estos pueden ejecutarse desde la línea de comandos de todos modos, lo que significa que podría combinarlos usando un simple script de shell. Me parece que configurar grunt + gruntfiles y escribir tareas es más trabajo que escribir un script de shell, en lugar de menos.
¿Qué me estoy perdiendo de esto?
Aunque estoy de acuerdo con la mayoría de las ventajas señaladas en la Respuesta aceptada , todavía tengo que considerar las desventajas que destaca Keith Cirkel en Por qué deberíamos dejar de usar Grunt & Gulp
Por lo tanto, algunas ventajas son refutadas por los gastos generales de Grunt y, al menos, debe considerar todo esto en su decisión final de usar Grunt, o no.
Grunt es básicamente un administrador de compilación / tarea escrito sobre NodeJS. Yo lo llamaría el equivalente de pila NodeJS de ANT para Java. Aquí hay algunos escenarios comunes en los que te gustaría usar gruñido:
- Tiene un proyecto con archivos javascript que requieren minificación y, en general, genera una compilación de front-end por separado (en caso de que esté usando, por ejemplo, JAVA para su back-end). ( grunt-contrib-uglify )
- Cuando guarda el código en su máquina durante el desarrollo, desea que el navegador vuelva a cargar su página automáticamente (puede parecer algo pequeño, pero créame, esto me ha ahorrado mucho tiempo). ( Recarga en vivo )
- Cuando un desarrollador guarda código en su máquina, quiere que se muestre una lista completa de errores JS / violaciones de mejores prácticas generales. ( gruñido-contrib-jshint )
- Tiene un proyecto con archivos SASS / LESS que deben compilarse en archivos CSS en la máquina del desarrollador durante el desarrollo. Por ejemplo, cada vez que guarde un archivo SASS, desea que se compile en un archivo CSS automáticamente, para incluirlo en su página . ( gruñido-contrib-sass )
- Tiene un equipo de desarrolladores front-end que trabajan en la interfaz de usuario y un equipo de desarrolladores back-end que trabajan en el back-end, desea que los desarrolladores front-end utilicen las API REST de back-end sin tener que compilar e implementar código cada vez por su cuenta. maquinas. En caso de que se lo esté preguntando, esto no es posible con una configuración típica de servidor web porque XHR no puede ser cruzado por el navegador. ¡Grunt puede configurar un proxy para que redirija las solicitudes XHR en su propio sistema dentro del servidor de Grunt Connect a otro sistema! ( grunt-contrib-proxy, grunt-contrib-connect )
No creo que su script de shell pueda hacer TODOS estos. Para resumir, sí, configurar un Gruntfile.js es tedioso para alguien que ha tenido poca exposición a JavaScript / es nuevo en nodeJS, pasé por los mismos dolores que un alumno, pero Grunt es una increíble pieza de software. INVIERTE el tiempo para configurar un Gruntfile.js adecuado para su proyecto front-end, y le agradecerá a Dios por hacer su vida mucho más fácil :)
La ventaja vs script de shell:
-
Si escribe script de shell para cada una de estas tareas, es tedioso mantener y personalizar para cada una de sus necesidades. Gruntfile.js es realmente bastante fácil. hay una configuración con la que la inicia, que especifica qué tareas desea realizar, las fuentes y los destinos para cada una.
-
La integración con los generadores de semillas del proyecto en Yeoman, Gulp, es otro factor importante a considerar. Yeoman y Gulp vienen con Gruntfile.js ''con valores predeterminados inteligentes. Para alguien que es el único contribuyente de UI en su equipo, ¡esto no tiene precio para mí!
-
Para alguien que está trabajando en tecnologías frontend, si tiene más de una persona trabajando con usted, es bastante fácil para ellos conocer Grunt, que ya está bien documentado con muchas respuestas sobre SO, que conocer su guiones de shell. Esto podría ser un factor en equipos grandes.
-
Los numerosos complementos para Grunt extienden la funcionalidad básica. A menos que su script de shell sea MUY popular y MUY modular, no veo complementos creados para él. Esto también se extiende a la inclusión de nuevas tecnologías front-end en su proyecto. Diga, si desea usar el mecanografiado en su proyecto mañana, su script de shell deberá incorporar esto y explicarlo con su propio esfuerzo. Con Grunt, es tan simple como "npm install" y agregar una configuración.