Skip to content

slimzc/i2b-frontend-workflow

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

I2B Frontend WorkFlow

Adaptado para Proyectos I2B.cl

Este es un sencillo flujo que pueden utilizar para proyectos frontend. Debes tener lo fundamental para funcionar:

  • NodeJS
  • LiveReload
  • Grunt command line interface (CLI): se instala a través del comando de terminal:
$ sudo npm install -g grunt-cli
$ sudo npm install -g bower
$ sudo gem install sass

Atención usuarios de Windows, necesitas un poco más de cuidado para configurar todo correctamente Leer más en la Wiki

###TL;DR (resumen)

  1. Descargar .zip de I2B Frontend WorkFlow
  2. Moverlos a su directorio de trabajo local (por ej. localhost/proyecto)
  3. $ npm install (instala node packages)
  4. $ bower install (instala librerias js)
  5. $ grunt init
  6. fin!

###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.

Se necesita cambiar al inicio de este archivo el Nombre-Cliente-y-Proyecto (sin espacios ni caracteres especiales):

{
	"name": "Nombre-Cliente-y-Proyecto"
	...

###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 procesados.

###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:

  • concat: concatena y minifica librerías JavaScript
  • jshint: busca y sugiere mejoras en tu JavaScript
  • uglify: minifica archivos JavaScript
  • spritesmith: crea una imagen y una hoja de estilos sprite a partir de varios íconos
  • imagemin: comprime imágenes
  • sass: compila y minifica archivos .scss
  • jade: compila y minifica archivos .jade
  • handlebars: compila archivos .handlebars utilizando este template system
  • bowercopy: copia las librerías JS en /src/js/libs para su uso
  • watch: corre tareas definidas cada vez que se realizan cambios a ellas, en este caso todas las anteriores.
  • ftp-deploy: realiza subida de los archivos que indiques a un servidor definido a través de FTP.
  • compress: comprime en .zip y guarda el archivo en el directorio /backup con el nombre del proyecto y timestamp.
  • autoprefixer: agrega prefijos directo a los archivos CSS generados de SCSS dentro de dist/assets/css correspondientes a las últimas 3 versiones (la actual y una anterior) de los principales browsers y las versiones en específico de IE 8 y 9.
  • jshint y htmlhint: verifica sintaxis JS y HTML según reglas básicas definidas en .jshintrc y .htmlhintrc respectivamente.

###Uso

El directorio base se llama /proyecto 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:

/proyecto/Gruntfile.js
/proyecto/package.json
/proyecto/dist/index.html

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

/proyecto/src/js/
/proyecto/src/js/libs/
/proyecto/src/sass/
/proyecto/src/sass/inc/
/proyecto/src/jade/
/proyecto/src/jade/inc/
/proyecto/src/images/
/proyecto/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:

/proyecto/dist/assets/js/
/proyecto/dist/assets/js/libs/
/proyecto/dist/assets/css/
/proyecto/dist/assets/images/

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

$ cd /path/to/proyecto/

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, principamente los relacionados con ftp-deploy (si lo vas a utilizar). Si todo concuerda, acciona el comando:

$ grunt init

Este comando comenzará a mover las librerías JavaScript a sus lugares y concatena las que están ya programadas.

Luego para comenzar a formar los directorios de trabajo:

$ grunt

El cual comenzará a procesar las tareas ya definidas. 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 jade/sass/js/images en tu proyecto, watch hará que se actualicen los archivos y LiveReload recargará el browser por tí.

El trabajo diario se realiza sólo con watch:

$ grunt watch

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

Además se rastrea los archivos .html generados desde .jade buscando errores de sintaxis básicos automáticamente a través de watch y manualmente con el comando:

$ grunt testhtml

Happy Coding :)

####To-Do:

  • Task para performance

About

Base GruntJS workflow for frontend projects

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 45.5%
  • CSS 30.1%
  • HTML 24.4%