Esse cara é o grunt

57
grunt esse cara é o @almirfilho @davidsonfellipe

description

♫ O cara que observa seus arquivos toda hora O cara que te avisa quando você quebra o build O cara que faz o reload por você O cara que após o save, te chama Pra dizer se o teste passou ou quebrou Esse cara é o Grunt!

Transcript of Esse cara é o grunt

Page 1: Esse cara é o grunt

gruntesse cara é o

@almirfilho@davidsonfellipe

Page 2: Esse cara é o grunt

@almirfilho

@davidsonfellipe

Page 3: Esse cara é o grunt

globo .com

Page 4: Esse cara é o grunt

do workflowrei

o

front-end

Page 5: Esse cara é o grunt

linha de comando

nodejs

automatizador de tarefas

Page 6: Esse cara é o grunt

o grunt não é o único

Page 7: Esse cara é o grunt

ant java

make shell

cake coffeescript

rake ruby

Page 8: Esse cara é o grunt

100k

200k

300k

downloads 2013

novoutsetagojuljunmaiabrmarfevjan

400k

dez

Page 9: Esse cara é o grunt

100k

200k

300k

downloads 2013-14

novoutsetagojuljunmaiabrmarfevjan

400k

dez

500k

600k

700k

mai 2014

Page 10: Esse cara é o grunt
Page 11: Esse cara é o grunt

automatizamos?por que

Page 12: Esse cara é o grunt

repetitivominimizar trabalho

Page 13: Esse cara é o grunt

detalhesmuitos

para lembrar

Page 14: Esse cara é o grunt

conversão

frameworks e libs

compilação

linting

testes

minificação

Page 15: Esse cara é o grunt

complexosútil para projetos

Page 16: Esse cara é o grunt

rodar testes pré-processadores:dev js/css lint web server scaffolding criar sprites live reloading

otimizar imagens concatenação pré-processadores:prod minificação e obfuscação gerar release deploy

dev

prod

Page 17: Esse cara é o grunt

eficiência!produtividade!

Page 18: Esse cara é o grunt

paz de espírito

Page 19: Esse cara é o grunt

gruntiniciando com

Page 20: Esse cara é o grunt

node.js & npmprimeiro as coisas primeiras

Page 21: Esse cara é o grunt

grunt-cliinstalação global

instalação local

configuração

configuração

grunt & tools

package.json

Gruntfile.js

Page 22: Esse cara é o grunt

$ npm install -g grunt-cli

grunt-cliinstalação global

Page 23: Esse cara é o grunt

{ "name": “lusac-noob", "version": "0.1.0", "devDependencies": { "grunt": "~0.4.2", "grunt-contrib-uglify": "~0.2.2" } }

package.jsonconfiguração

Page 24: Esse cara é o grunt

$ npm install

grunt & toolsinstalação local

Page 25: Esse cara é o grunt

--save-dev

$ npm install nome-pacote --save-dev

Page 26: Esse cara é o grunt

module.exports = function(grunt){ grunt.initConfig({ uglify: {/* config da tarefa */}, jasmine: {/* config da tarefa */}, compass: {/* config da tarefa */} }); grunt.loadNpmTasks(‘grunt-contrib-uglify’); grunt.loadNpmTasks(‘grunt-contrib-jasmine’); grunt.loadNpmTasks(‘grunt-contrib-compass’); }

Gruntfile.jsconfiguração

Page 27: Esse cara é o grunt

grunt.initConfig({ uglify: { options: { banner: ‘/* dave fulêro */\n’ }, build: { src: ‘src/app.js’, dest: ‘build/app.min.js’ } }, jasmine: {/* config da tarefa */}, compass: {/* config da tarefa */} });

Page 28: Esse cara é o grunt

grunt.registerTask(‘build’, [ ‘jasmine’, ‘uglify’, ‘compass’ ]); !

grunt.registerTask(‘run’, [ ‘build’, ‘connect’ ]); !

grunt.registerTask(‘default’, ['run']);

Page 29: Esse cara é o grunt

popquem é

Page 30: Esse cara é o grunt

concatenaçãode arquivos

a.js

e.js

i.js

o.js

u.js

vogais.js

Page 31: Esse cara é o grunt

$ npm install grunt-contrib-concat --save-dev

grunt-contrib-concato cara que concatena seus arquivos

Page 32: Esse cara é o grunt

grunt.initConfig({ concat: { options: { separator: ';', }, dist: { src: ['src/a.js', 'src/e.js'], dest: 'build/vogais.js', } } });

concatno Gruntfile.js

Page 33: Esse cara é o grunt

$ grunt concat

concatenação

rodando manualmente

Page 34: Esse cara é o grunt

obfuscação e minificação

de scripts

all.min.jsall.js

Page 35: Esse cara é o grunt

var toSeconds = function(hour) { !

return hour * 3600; !};

var toSeconds = function(a) { !

return a * 3600; !};

var toSeconds=function(a){return a*3600;};

obfuscação

minificação

Page 36: Esse cara é o grunt

$ npm install grunt-contrib-uglify --save-dev

grunt-contrib-uglifyo cara que comprime seus arquivos

Page 37: Esse cara é o grunt

grunt.initConfig({ uglify: { build: { src: 'src/all.js', dest: 'build/all.min.js' } } });

uglifyno Gruntfile.js

Page 38: Esse cara é o grunt

$ grunt uglify

obfuscação e minificação

rodando manualmente

Page 39: Esse cara é o grunt

pré-processadoresde código

widget.scsswidget.cs

s

Page 40: Esse cara é o grunt

$ npm install grunt-contrib-compass --save-dev

grunt-contrib-compasso cara que compila seu sass

Page 41: Esse cara é o grunt

grunt.initConfig({ compass: { dev: { options: { sassDir: 'src/scss', cssDir: 'build/css', imagesDir: 'src/img',

generatedImagesDir: 'build/img' } }, prod: { /* ... */ } }});

compassno Gruntfile.js

Page 42: Esse cara é o grunt

grunt.initConfig({ compass: { dev: { /* ... */ }, prod: { options: { sassDir: 'src/scss', cssDir: 'build/css', imagesDir: 'src/img',

generatedImagesDir: 'build/img', outputStyle: 'compressed', noLineComments: true

}}}});

compassno Gruntfile.js

Page 43: Esse cara é o grunt

$ grunt compass:dev

compilação de sass

$ grunt compass:prod

rodando manualmente

Page 44: Esse cara é o grunt

pré-processadores

grunt-contrib-sasssass

stylus

less

coffeescript

grunt-contrib-stylus

grunt-contrib-less

grunt-contrib-coffee

Page 45: Esse cara é o grunt

testesautomatizados

specs

sucesso

erro

Page 46: Esse cara é o grunt

$ npm install grunt-contrib-jasmine --save-dev

grunt-contrib-jasmineo cara que testa seu código e te avisa

Page 47: Esse cara é o grunt

grunt.initConfig({ jasmine: { src: 'src/**/*.js', options: { specs: 'spec/*Spec.js', helpers: 'spec/*Helper.js' } } });

jasmineno Gruntfile.js

Page 48: Esse cara é o grunt

$ grunt jasmine

rodando manualmentetestes automatizados

Page 49: Esse cara é o grunt

suites de testes

grunt-contrib-jasminejasmine

mocha

qunit

grunt-simple-mocha

grunt-contrib-qunit

Page 50: Esse cara é o grunt

watchfique de olho

widget.scss

widget.css

save file

all.min.jsall.js

uglify

compass

Page 51: Esse cara é o grunt

$ npm install grunt-contrib-watch --save-dev

grunt-contrib-watcho cara que vigia tudo para você

Page 52: Esse cara é o grunt

grunt.initConfig({ watch: { scripts: { files: ['src/**/*.js'], tasks: ['concat:scripts', 'uglify'] } } });

watchno Gruntfile.js

Page 53: Esse cara é o grunt

concatenação js/css lint testes criar sprites pré-processadores live reloading

tarefas comuns para watch

Page 54: Esse cara é o grunt

na práticaglobo esporte

setup

Page 55: Esse cara é o grunt

6 semanas!

Page 56: Esse cara é o grunt

faça suas escolhas sabiamente

Page 57: Esse cara é o grunt

obrigado!

/almirfilho

/almirfilho

/davidsonfellipe

/davidsonfellipe