Home

Awesome

Automatización de tareas para proyectos en Front-End | CSSLab.cl

Basic and simple GruntJS workflow for front-end projects

Automatización de tareas para proyectos en Front-End

Artículo: Automatización de tareas para proyectos en Front-End | CSSLab.cl

GruntJS es la herramienta de automatización de tareas escrita en JavaScript que más crece actualmente. Es robusta y está activamente siendo mejorada, y sólo requiere NodeJS para funcionar. Su fortaleza está en crear rutinas automatizadas para procesos repetitivos, como por ejemplo: compilar un archivo LESS/SCSS/HAML/Handlebars/Liquid, minificar archivos .css y .js, concatenar librerías .js, crear sprites y comprimir imágenes, recargar el browser cada vez que hayan nuevos cambios entre muchos otros que se te puedan ocurrir.

Este es un sencillo flujo que pueden utilizar para proyectos front-end; es un buen comienzo para quienes no están familiarizados aún con su utilidad y el uso cotidiano del Terminal/Consola.

Primero, debes tener lo fundamental para funcionar:

package.json

Es el archivo que contiene los nombres de las librerías Node que utilizaremos para automatizar nuestras tareas recurrentes y que reside en la raíz del proyecto. Aquí están el nombre y la versión de cada plugin que necesitaremos, de una larga lista de plugins existentes.

bower.json

Archivo json que contiene las librerías JavaScript utilizadas para este proyecto. A través de ella se realiza el traspaso desde cada repositorio y se descarga las últimas versiones disponibles a bower_components y que posteriormente serán procesadas.

Gruntfile.js

Es el archivo base con el cual crearemos las tareas que necesitamos corra GruntJS por nosotros y que reside en la raíz del proyecto junto a package.json. En este archivo están definidas los plugins que utilizaremos y cómo deben trabajar, en esta ocasión incluyo los siguientes:

Uso

El directorio base se llama /simple-grunt-workflow y contiene todo lo necesario para comenzar a trabajar. Suponiendo que trabajas en un servidor local, la estructura básica de archivos es la siguiente:

/simple-grunt-workflow/Gruntfile.js
/simple-grunt-workflow/package.json
/simple-grunt-workflow/dist/index.html

El directorio donde trabajarás tus assets se llama /src y contiene:

/simple-grunt-workflow/src/js/
/simple-grunt-workflow/src/less/
/simple-grunt-workflow/src/less/inc/
/simple-grunt-workflow/src/images/
/simple-grunt-workflow/src/images/sprites/

Los que después de procesados por GruntJS residirán en /assets y son los que debes llamar desde tus archivos HTML:

/simple-grunt-workflow/dist/assets/js/
/simple-grunt-workflow/dist/assets/js/libs/
/simple-grunt-workflow/dist/assets/css/
/simple-grunt-workflow/dist/assets/images/

Para comenzar a trabajar, en Terminal/Consola debes estar en el directorio que estés trabajando:

$ cd /path/to/simple-grunt-workflow/

Para instalar los plugins a utilizarse y que están definidos en package.json:

$ sudo npm install

Con esto se llamarán a todos los repositorios e instalará los paquetes necesarios para hacer las tareas que tenemos asignadas. Esto puede tomar unos minutos y creará un directorio /node_modules en la raíz de tu proyecto. Este directorio sólo le es útil a GruntJS, no debemos utilizarlo en ambiente productivo.

Luego es hora de descargar las librerías JavaScript base y sus dependencias a través de Bower:

$ sudo bower install

Antes de correr GruntJS, abre Gruntfile.js y revisa los path que concuerden con los que estés trabajando. Si todo concuerda, acciona el comando:

$ grunt init

El cual comenzará a procesar las tareas iniciales principalmente de relocar los archivos .js descargados mediante bower al directorio src/js correspondiente. Luego para comenzar a trabajar, acciona:

$ grunt

El que quedará en watch esperando cambios o actualizaciones en los archivos. En este momento debes llamar el directorio de trabajo en tu browser (a través de tu servidor web local) y activar LiveReload. Cuando el ícono cambie es porque está sincronizado con GruntJS y a cada cambio en archivos html/less/js/images en tu proyecto, watch hará que se actualicen los archivos y LiveReload recargará el browser por tí.

Si hay un error en tu sintaxis lo más probable es que GruntJS te avise y deje de correr, por lo que debes corregirlo antes de continuar.

Test

A través de un nueva tarea de GruntJS se prueba el archivo JavaScript en búsqueda de errores de sintaxis y mejoras en él:

$ grunt testjs

Happy Coding :)