+ - 0:00:00
Notes for current slide
Notes for next slide

Workflow Moderno para Proyectos Front-end

1 / 24

Grunt

Un automatizador para tareas front-end

2 / 24

Grunt

  • con inferfaz 'cli'
  • escrito en JavaScript sobre NodeJS
  • agnóstico, modular, ideal para trabajos complejos
  • que ayuda a que tengamos menos trabajo
  • y seamos más eficientes
3 / 24

Automatizador de tareas

Mientras nos concentramos en crear código, Grunt se encarga de realizar por nosotros las tareas más tediosas como:

  • detección de errores en JS/CSS
  • minificación / compilación de código
  • concatenación de librerías JS/CSS
  • compresión de imágenes
  • creación de sprites
  • recarga del browser si existe algo nuevo en alguna de las tareas programadas
  • ... ¿?
4 / 24

Pero no es nada nuevo

Java Ant | Ruby Rake | Make | CoffeeScript Cake

5 / 24

Tampoco el único

Gulp | Broccoli | Mimosa | Bud

6 / 24

Qué se necesita

Instalación global:

  • node
  • grunt-cli

Instalación local:

  • grunt & plugins
  • package.json
  • gruntfile.js
7 / 24

Cómo funciona

package.json

  • se deja en la raíz del proyecto
  • especifica la metadata de los proyectos
  • maneja versiones de los plugins de Grunt através de npm

8 / 24

gruntfile.js

  • se deja en la raíz del proyecto
  • especifica las tareas y sus comportamiento
  • especifica rutinas por tareas o una rutina global

Getting Started | Configuring Tasks | Creating Tasks

9 / 24

plugins

grunt-contrib-watch Aguarda por cambios en archivos
grunt-contrib-connect Inicia un web server simple
grunt-open Abre browser en cierta URL
grunt-contrib-concat Concatena archivos
grunt-contrib-sass Compila SASS
grunt-contrib-compress Crea archivos Zip/Tar/Gz
grunt-contrib-clean Vacía un directorio
grunt-imageoptim Optimiza imagenes
grunt-aws-s3 Upload/Download desde AWS S3
grunt-text-replace Reemplaza textos en archivos
grunt-contrib-copy Copia archivos
10 / 24

11 / 24
watch

nos cuida a todos y se encarga de que no se nos olvide nada

src/js/libs/jquery.js
src/js/libs/timelinr.js
src/js/functions.js
src/less/inc/reset.less
src/less/inc/mixins.less
src/less/styles.css

dist/js/libs/libs.min.js
dist/js/functions.min.js
dist/css/style.css
12 / 24

configuración

module.exports = function(grunt){
grunt.initConfig({
uglify: {/* config */},
jslint: {/* config */},
less: {/* config */},
watch: {/* config */}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', ['uglify','less']);
}
13 / 24
tarea
uglify: {
options: {
banner: '/* jQuery Timelinr */\n'
},
build: {
src: 'src/timelinr.js'
dest: 'build/timelinr.min.js'
}
},
watch: {
scripts: {
files: ['src/js/*.js'],
tasks: ['uglify']
}
}
14 / 24
rutinas
grunt.registerTask('default', ['uglify','less']);
grunt.registerTask('build', ['uglify','less','concat']);
grunt.registerTask('test', ['uglify','jslint']);
15 / 24

correr Grunt:

$ grunt

correr una tarea dentro de Grunt:

$ grunt tareaespecifica

correr una configuración dentro de una tarea dentro de Grunt:

$ grunt tareaespecifica:config
16 / 24

Si existen Gems y NPM, por qué no uno para el front-end?


¯ˉ\_(ツ)_/¯ˉ
17 / 24

Bower

Un package manager para la web

18 / 24

Si necesitas:

  • instalar una librería JS
  • mantener una librería JS
  • verificar dependencias y sus versiones

Bower hace el trabajo

19 / 24

Bower Depende de NodeJS y se instala globalmente:

$ npm install -g bower

Luego localmente tus librerías:

$ bower install jquery
$ bower install timelinr
20 / 24

librerias

$ bower search ....

21 / 24

O si necesitas una versión específica:

$ bower install bootstrap#2.01

¡Bower se encarga de verificar si tienes las dependencias correctas!

22 / 24

bower.json

  • se deja en la raíz del proyecto
  • especifica las librerías y sus dependencias

23 / 24

24 / 24

Grunt

Un automatizador para tareas front-end

2 / 24
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
b Toggle blackout mode
f Toggle fullscreen mode
c Clone slideshow
p Toggle presenter mode
w Pause/Resume the presentation
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow