Automatizar tareas en JavaScript con Grunt.js

1 de agosto de 20133 min lectura·javascriptnodejsherramientas
Aprende a automatizar tareas en JavaScript con Grunt.js: configura un Gruntfile, usa plugins como watch, stylus y cssmin, y optimiza tu flujo de desarrollo web

Grunt.js es una librería JavaScript que nos permite configurar tareas automáticas y así ahorrarnos tiempo en nuestro desarrollo y despliegue de aplicaciones webs.

Con un simple fichero JS que llamaremos Gruntfile, indicamos las tareas que queremos automatizar con un simple comando y las escribimos en él en formato JSON.

Automatización de tareas con Grunt JS

A continuación muestro como sería este fichero para automatizar las tareas de arranque del servidor y preprocesamiento de archivos stylus a CSS y su minificación.

Instalación

Lo primero que necesitamos es instalar Grunt de manera global en nuestro equipo, doy por hecho que ya tenemos Node.js instalado, si no es así pásate por esta entrada.

Para ello tecleamos:

shell
$ sudo npm install -g grunt
$ sudo npm install -g grunt-cli

Plugins necesarios

Grunt posee diversos plugins para tareas específicas, nosotros usaremos grunt-contrib-watch, grunt-contrib-stylus, grunt-contrib-cssmin y grunt-contrib-bg-shell. Estas librerías nos permitirán vigilar cambiso que hagamos en determinados directorios para así actuar y ejecutar la tarea que queremos, preprocesar stylus y convertirlo a CSS, minificar el CSS y ejecutar instrucciones por linea de comandos respectivamente.

Cargar los plugins en el Gruntfile

Para cargar los plugins, debemos incluir en nuestro fichero Gruntfile.js las siguientes líneas:

javascript
grunt.loadNpmTasks("grunt-contrib-watch");
grunt.loadNpmTasks("grunt-contrib-stylus");
grunt.loadNpmTasks("grunt-contrib-cssmin");
grunt.loadNpmTasks("grunt-bg-shell");

Definición de tareas

las tareas que vamos a definir serán las siguientes:

javascript
// Con ésta tarea llamada 'compile' llamamos a las
// tareas 'stylus' y 'cssmin' que ahora definiremos
grunt.registerTask("compile", ["stylus", "cssmin"]);

// Ésta tarea llamada 'server' nos permitirá correr
// el servidor a al vez que las tareas 'compile' y
// 'watch' que ahora definiremos
grunt.registerTask("server", ["bgShell:runNode", "compile", "watch"]);

Descripción de cada tarea

Procedemos a crear las tareas:

  • bgShell:runNode con ella indicamos un comando para ejecutar por el inteerprete.
  • stylus: Con ella preprocesamos los ficheros .styl que tengamos a un único fichero .css (Stylus es un preprocesador de CSS como lo son Compass, Sass, Less,… pero más hipster porque funciona bajo Node.js ;)
  • cssmin: Con esto minificamos el fichero css resultante en una sola línea de texto para que sea menos pesado y nuestra aplicación web tarde menos en cargar
  • watch: Gracias a ella cualquier cambio que hagamos en un fichero CSS o STYLUS se dará cuenta y ejecutará el preprocesamiento para que no tengamos que preocuparnos de resetear nada.

Código completo del Gruntfile

El código para definir las tareas sería algo así:

javascript
module.exports = function(grunt) {
	grunt.initConfig({
		pkg: grunt.file.readJSON('package.json'),

		bgShell: {
			runNode: {
				cmd: 'node app.js',
				bg: true
			}
		},

		stylus: {
			compile: {
				options
← Todos los artículos
Compartir en XCompartir en LinkedIn
También te puede interesar

Artículos relacionados

javascriptnodejs

Browserify. Desarrollando tu Frontend como en Node.js

mar 20155 min
javascriptnodejs

Automatizando tu flujo de trabajo en el Frontend con GulpJS

jul 20144 min
reactjavascript

Cómo iniciar un proyecto React con Vite

oct 20222 min
Newsletter · AprendiendoDEV

Aprende más cada semana.

Noticias de JavaScript, arquitectura de software e IA, directas a tu bandeja de entrada. Sin spam, puedes darte de baja cuando quieras.

Powered by Substack · Sin spam · Baja cuando quieras