60
grunt esse cara é o @almirfilho @davidsonfellipe

Esse cara é o grunt

Embed Size (px)

Citation preview

Page 1: Esse cara é o grunt

gruntesse cara é o

@almirfilho@davidsonfellipe

Page 2: Esse cara é o grunt
Page 3: Esse cara é o grunt

@almirfilho

@davidsonfellipe

Page 4: Esse cara é o grunt

globo .com

Page 5: Esse cara é o grunt

do workflowrei

o

front-end

Page 6: Esse cara é o grunt

linha de comando

nodejs

automatizador de tarefas

Page 7: Esse cara é o grunt

o grunt nãoé o único

Page 8: Esse cara é o grunt

ant java

make shell

cake coffeescript

rake ruby

Page 9: Esse cara é o grunt

downloads 2013

Page 10: Esse cara é o grunt

100k

200k

300k

downloads 2013

novoutsetagojuljunmaiabrmarfevjan

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

automatizamos?por que

Page 13: Esse cara é o grunt

repetitivominimizar trabalho

Page 14: Esse cara é o grunt

detalhesmuitos

para lembrar

Page 15: Esse cara é o grunt

conversão

frameworkse libs

compilação

linting

testes

minificação

Page 16: Esse cara é o grunt

complexosútil para projetos

Page 17: Esse cara é o grunt

rodar testespré-processadores:devjs/css lintweb serverscaffoldingotimizar imagenscriar spriteslive reloading

minificação e obfuscaçãoconcatenaçãopré-processadores:prodgerar releasedeploy

dev

prod

Page 18: Esse cara é o grunt

eficiência!produtividade!

Page 19: Esse cara é o grunt

paz deespírito

Page 20: Esse cara é o grunt

gruntiniciando com

Page 21: Esse cara é o grunt

node.js & npmprimeiro as coisas primeiras

Page 22: Esse cara é o grunt

grunt-cliinstalação global

instalação local

configuração

configuração

grunt & tools

package.json

Gruntfile.js

Page 23: Esse cara é o grunt

$ npm install -g grunt-cli

grunt-cliinstalação global

Page 24: Esse cara é o grunt

{ "name": "dave-fulero", "version": "0.1.0", "devDependencies": { "grunt": "~0.4.2", "grunt-contrib-uglify": "~0.2.2" }}

package.jsonconfiguração

Page 25: Esse cara é o grunt

$ npm install

grunt & toolsinstalação local

Page 26: Esse cara é o grunt

--save-dev

$ npm install nome-pacote --save-dev

Page 27: Esse cara é o grunt

module.exports = function(grunt){ grunt.initConfig({ pkg: grunt.file.readJSON(‘package.json’), uglify: {/* configuração da tarefa */} }); grunt.loadNpmTasks(‘grunt-contrib-uglify’); grunt.registerTask(‘default’, [‘uglify’]);}

Gruntfile.jsconfiguração

Page 28: Esse cara é o grunt

grunt.initConfig({ uglify: { options: { banner: ‘/* dave fulêro */\n’ }, build: { src: ‘src/<%= pkg.name %>.js’, dest: ‘build/<%= pkg.name %>.min.js’ } }});

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.scss widget.css

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

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: { build: { files: ['src/**/*.{scss, js}'], tasks: [ 'compass:dev', 'concat', 'uglify' ] } }});

watchno Gruntfile.js

Page 53: Esse cara é o grunt

testespré-processadoresjs/css lintcriar spriteslive reloadingconcatenação

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

globo .com

/talentosgithub.com/globocom/

IWantToWorkAtGloboCom

Page 58: Esse cara é o grunt

obrigado!

Page 59: Esse cara é o grunt

obrigado!

/almirfilho

/almirfilho

/davidsonfellipe

/davidsonfellipe

Page 60: Esse cara é o grunt

obrigado!