SlideShare une entreprise Scribd logo
1  sur  31
Matheus Thomaz
O que é? 
● Ferramenta de build 
● Javascript task-runner 
● Automatizador de tarefas
Porque usar um automatizador de 
tarefas 
● Minificar imagens 
● preprocessar CSS 
● Enviar arquivos para FTP 
● Comprimir javascript 
● Criar sprites 
● Etc...
Porque usar gulp?
Grunt Gulp 
Um plugin pode ter mais de uma 
tarefa 
Cada plugin tem apenas uma tarefa 
Javascript Objects Node-like 
Plugins para funções básicas Funções básicas integradas
Porque usar gulp? 
● O Gulp é muito mais rápido que o Grunt por utilizar as 
streams do nodejs para escrever arquivos diretamente 
no disco. 
● Código mais claro e limpo 
● Menor curva de apredizado
Grunt 
module.exports = function(grunt) { 
grunt.initConfig({ 
concat: { 
'dist/all.js': ['src/*.js'] 
}, 
uglify: { 
'dist/all.min.js': ['dist/all.js'] 
}, 
jshint: { 
files: ['gruntfile.js', 'src/*.js'] 
}, 
watch: { 
files: ['gruntfile.js', 'src/*.js'], 
tasks: ['jshint', 'concat', 'uglify'] 
} 
}); 
// Load Our Plugins grunt.loadNpmTasks('grunt-contrib-jshint'); 
grunt.loadNpmTasks('grunt-contrib-concat'); 
grunt.loadNpmTasks('grunt-contrib-uglify'); 
grunt.loadNpmTasks('grunt-contrib-watch'); 
// Register Default Task grunt.registerTask('default', ['jshint', 
'concat', 'uglify']); 
}; 
Gulp 
var gulp = require('gulp'), jshint = require('gulp-jshint'), 
concat = require('gulp-concat'), rename = require('gulp-rename'), 
uglify = require('gulp-uglify'); 
// Lint JSgulp.task('lint', function() { 
return gulp.src('src/*.js') 
.pipe(jshint()) 
.pipe(jshint.reporter('default')); 
}); 
// Concat & Minify JSgulp.task('minify', function(){ 
return gulp.src('src/*.js') 
.pipe(concat('all.js')) 
.pipe(gulp.dest('dist')) 
.pipe(rename('all.min.js')) 
.pipe(uglify()) 
.pipe(gulp.dest('dist')); 
}); 
// Watch Our Filesgulp.task('watch', function() { 
gulp.watch('src/*.js', ['lint', 'minify']); 
}); 
// Defaultgulp.task('default', ['lint', 'minify', 'watch']);
Grunt 
module.exports = function(grunt) { 
// Project configuration. 
grunt.initConfig({ 
cssmin: { 
combine: { 
files: 
{ 
'style.min.css': ['style.css'] 
} 
} 
} 
}); 
// Load the plugin that provides the "uglify" 
task. 
grunt.loadNpmTasks('grunt-contrib-cssmin'); 
// Default task(s). 
grunt.registerTask('default', ['cssmin']); 
}; 
Gulp 
var gulp = require('gulp'), 
minify = require('gulp-minify-css'); 
gulp.task('styles', function() { return 
gulp.src('./style.css') 
.pipe(minify()) 
.pipe(gulp.dest('./dist/')); 
}); 
gulp.task('default', function() { 
gulp.run('styles'); 
});
Funções Básicas
Funções Básicas 
gulp.task(name, fn) 
Registra uma função pelo seu nome.
Funções Básicas 
gulp.task(name, fn) 
gulp.task('less', function () { 
gulp.src(path.less) 
.pipe(less()) 
.pipe(gulp.dest('contents/assets/css')); 
});
Funções Básicas 
gulp.run(task, task, ...) 
DEPRECATED
Funções Básicas 
gulp.watch(glob, fn) 
gulp.task('watch', function ( ) { 
gulp.watch('assets/less/*.less', ['less']); 
});
Funções Básicas 
gulp.watch(glob, fn) 
Executa uma função quando um arquivo alterado bate com o glob.
Funções Básicas 
gulp.src(glob) 
Retorna um caminho para acessar arquivos
Funções Básicas 
gulp.src(glob) 
gulp.task('less', function () { 
gulp.src('assets/less/*.less') 
.pipe(less()) 
.pipe(gulp.dest('contents/assets/css')); 
});
Funções Básicas 
gulp.dest(glob) 
Retorna um caminho para gravar arquivos
Funções Básicas 
gulp.dest(glob) 
gulp.task('less', function () { 
gulp.src('assets/less/*.less') 
.pipe(less()) 
.pipe(gulp.dest('contents/assets/css')); 
});
Instalação
Dependências 
Node 
Node Package Manager
Instalação 
npm init 
npm install gulp --save-dev
Iniciando um projeto
Projeto 
var gulp = require('gulp'), 
less = require('gulp-less'), 
imagemin = require('gulp-imagemin'), 
uglify = require('gulp-uglify');
Projeto 
gulp.task('less', function () { 
gulp.src(path.less) 
.pipe(less()) 
.pipe(gulp.dest('assets/css')); 
});
Projeto 
gulp.task('images', function () { 
gulp.src(path.img) 
.pipe(imagemin()) 
.pipe(gulp.dest('build/assets/img')); 
});
Projeto 
gulp.task('js', function () { 
gulp.src(path.js) 
.pipe(uglify({outSourceMap: true})) 
.pipe(gulp.dest('assets/js/min')); 
});
Projeto 
gulp.task('watch', function () { 
gulp.watch(path.less, ['less']); 
});
Projeto 
gulp.task('default', ['watch']); 
gulp.task('build', ['images', 'js', 'less']);
Projeto - executando 
$ gulp 
// Executa a task ‘default’ 
$ gulp nomeTask 
// Executa a task chamada
Obrigado

Contenu connexe

Tendances

Devshare - Automatizando tarefas de javascript com GruntJS
Devshare  - Automatizando tarefas de javascript com GruntJSDevshare  - Automatizando tarefas de javascript com GruntJS
Devshare - Automatizando tarefas de javascript com GruntJSRafael Lyra
 
Containers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteContainers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteRoberto Mello
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containerstdc-globalcode
 
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010lucashungaro
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
Mecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBMecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBLuiz Duarte
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPMarcelo Andrade
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º diaArmando Couto
 
Para ontem: carregando sites mais rapidamente
Para ontem: carregando sites mais rapidamentePara ontem: carregando sites mais rapidamente
Para ontem: carregando sites mais rapidamenteThiago Ayub
 
Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetesRicardo Katz
 
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelosEvandro Silvestre
 
Sist operacionais 7
Sist operacionais 7Sist operacionais 7
Sist operacionais 7Nauber Gois
 
MINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAMINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAArmando Couto
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao DockerGeorge Moura
 

Tendances (20)

Utilizando Docker para escalonar aplicações Node.Js
Utilizando Docker para escalonar aplicações Node.JsUtilizando Docker para escalonar aplicações Node.Js
Utilizando Docker para escalonar aplicações Node.Js
 
Devshare - Automatizando tarefas de javascript com GruntJS
Devshare  - Automatizando tarefas de javascript com GruntJSDevshare  - Automatizando tarefas de javascript com GruntJS
Devshare - Automatizando tarefas de javascript com GruntJS
 
Containers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteContainers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container Suite
 
Bricklayer
BricklayerBricklayer
Bricklayer
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
 
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Hackaton
HackatonHackaton
Hackaton
 
Mecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBMecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDB
 
PHP no Windows Azure
PHP no Windows AzurePHP no Windows Azure
PHP no Windows Azure
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHP
 
Aula de Node
Aula de NodeAula de Node
Aula de Node
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º dia
 
Para ontem: carregando sites mais rapidamente
Para ontem: carregando sites mais rapidamentePara ontem: carregando sites mais rapidamente
Para ontem: carregando sites mais rapidamente
 
Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetes
 
Dashboard slides
Dashboard slidesDashboard slides
Dashboard slides
 
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
 
Sist operacionais 7
Sist operacionais 7Sist operacionais 7
Sist operacionais 7
 
MINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAMINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIA
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
 

En vedette

Minicurso Iniciando no Mundo Front-End - Dia 01 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 01 - SASPI {5}Minicurso Iniciando no Mundo Front-End - Dia 01 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 01 - SASPI {5}Matheus Thomaz
 
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinhaTime de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinhaDeblyn Prado
 
O Verdadeiro Caminhos Das Índias
O Verdadeiro Caminhos Das ÍndiasO Verdadeiro Caminhos Das Índias
O Verdadeiro Caminhos Das ÍndiasMarcely Novo
 
Romanticismo lenguaje
Romanticismo lenguajeRomanticismo lenguaje
Romanticismo lenguajeGerlin Funez
 
Vanguardas europeias simplificado
Vanguardas europeias simplificadoVanguardas europeias simplificado
Vanguardas europeias simplificadoLuiz Lisboa
 
Literatura española desde el lazarillo hasta la época presentación
Literatura española desde el lazarillo hasta la época presentaciónLiteratura española desde el lazarillo hasta la época presentación
Literatura española desde el lazarillo hasta la época presentaciónSandra Martinez Ruiz
 
Inteligencia Linguistica
Inteligencia LinguisticaInteligencia Linguistica
Inteligencia Linguisticagadea
 
El globo-isol
El globo-isolEl globo-isol
El globo-isolagusjulio
 
Inteligencia linguistica[1]
Inteligencia linguistica[1]Inteligencia linguistica[1]
Inteligencia linguistica[1]briyis
 
Literatura Española Neoclasicismo
Literatura Española NeoclasicismoLiteratura Española Neoclasicismo
Literatura Española NeoclasicismoMr Rius
 
Inteligencias Múltiples - Lingüística
Inteligencias Múltiples - LingüísticaInteligencias Múltiples - Lingüística
Inteligencias Múltiples - Lingüísticareaktivo
 
LITERATURA DEL NEOCLASICISMO
LITERATURA DEL NEOCLASICISMOLITERATURA DEL NEOCLASICISMO
LITERATURA DEL NEOCLASICISMOsandracv13
 

En vedette (17)

Programar é pensar
Programar é pensarProgramar é pensar
Programar é pensar
 
Minicurso Iniciando no Mundo Front-End - Dia 01 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 01 - SASPI {5}Minicurso Iniciando no Mundo Front-End - Dia 01 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 01 - SASPI {5}
 
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinhaTime de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
 
Auto-gerenciamento
Auto-gerenciamentoAuto-gerenciamento
Auto-gerenciamento
 
O Verdadeiro Caminhos Das Índias
O Verdadeiro Caminhos Das ÍndiasO Verdadeiro Caminhos Das Índias
O Verdadeiro Caminhos Das Índias
 
Romanticismo lenguaje
Romanticismo lenguajeRomanticismo lenguaje
Romanticismo lenguaje
 
Vanguardas europeias simplificado
Vanguardas europeias simplificadoVanguardas europeias simplificado
Vanguardas europeias simplificado
 
Literatura española desde el lazarillo hasta la época presentación
Literatura española desde el lazarillo hasta la época presentaciónLiteratura española desde el lazarillo hasta la época presentación
Literatura española desde el lazarillo hasta la época presentación
 
Inteligencia lingüística
Inteligencia lingüísticaInteligencia lingüística
Inteligencia lingüística
 
Inteligencia Linguistica
Inteligencia LinguisticaInteligencia Linguistica
Inteligencia Linguistica
 
El globo-isol
El globo-isolEl globo-isol
El globo-isol
 
Inteligencia linguistica[1]
Inteligencia linguistica[1]Inteligencia linguistica[1]
Inteligencia linguistica[1]
 
A Inteligência
A InteligênciaA Inteligência
A Inteligência
 
Inteligência
InteligênciaInteligência
Inteligência
 
Literatura Española Neoclasicismo
Literatura Española NeoclasicismoLiteratura Española Neoclasicismo
Literatura Española Neoclasicismo
 
Inteligencias Múltiples - Lingüística
Inteligencias Múltiples - LingüísticaInteligencias Múltiples - Lingüística
Inteligencias Múltiples - Lingüística
 
LITERATURA DEL NEOCLASICISMO
LITERATURA DEL NEOCLASICISMOLITERATURA DEL NEOCLASICISMO
LITERATURA DEL NEOCLASICISMO
 

Similaire à Gulp

Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanElton Minetto
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsMichael Douglas
 
Aplicações com Tecnologias Web
Aplicações com Tecnologias WebAplicações com Tecnologias Web
Aplicações com Tecnologias WebRildo Pragana
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e SphinxElton Minetto
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)Luís Cobucci
 
isk-daemon: busca visual de imagens para todos
isk-daemon: busca visual de imagens para todosisk-daemon: busca visual de imagens para todos
isk-daemon: busca visual de imagens para todosRicardo Cabral
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!magnunleno
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Fabrízio Mello
 
Busca Visual
Busca VisualBusca Visual
Busca Visualgsroma
 
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...iMasters
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o NodejsCaio Cutrim
 
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresasDockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresasRafael Gomes
 

Similaire à Gulp (20)

Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando Gearman
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.js
 
Aplicações com Tecnologias Web
Aplicações com Tecnologias WebAplicações com Tecnologias Web
Aplicações com Tecnologias Web
 
Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
 
Precisamos falar sobre Gradle
Precisamos falar sobre GradlePrecisamos falar sobre Gradle
Precisamos falar sobre Gradle
 
Apresentacao deploy
Apresentacao deployApresentacao deploy
Apresentacao deploy
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)
 
Grunt
GruntGrunt
Grunt
 
isk-daemon: busca visual de imagens para todos
isk-daemon: busca visual de imagens para todosisk-daemon: busca visual de imagens para todos
isk-daemon: busca visual de imagens para todos
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Esse cara é o grunt
Esse cara é o gruntEsse cara é o grunt
Esse cara é o grunt
 
Plack
PlackPlack
Plack
 
Busca Visual
Busca VisualBusca Visual
Busca Visual
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresasDockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
 

Plus de Matheus Thomaz

Minicurso Iniciando no Mundo Front-End - Dia 02 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 02 - SASPI {5}Minicurso Iniciando no Mundo Front-End - Dia 02 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 02 - SASPI {5}Matheus Thomaz
 
Minicurso Iniciando no Mundo Front-End - Dia 03 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 03 - SASPI {5}Minicurso Iniciando no Mundo Front-End - Dia 03 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 03 - SASPI {5}Matheus Thomaz
 
Minicurso Iniciando no Mundo Front-End - Dia 05 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 05 - SASPI {5}Minicurso Iniciando no Mundo Front-End - Dia 05 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 05 - SASPI {5}Matheus Thomaz
 
Minicurso Iniciando no Mundo Front-End - Dia 04 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 04 - SASPI {5}Minicurso Iniciando no Mundo Front-End - Dia 04 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 04 - SASPI {5}Matheus Thomaz
 

Plus de Matheus Thomaz (7)

Jekyll
JekyllJekyll
Jekyll
 
Jekyll
JekyllJekyll
Jekyll
 
Minicurso Iniciando no Mundo Front-End - Dia 02 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 02 - SASPI {5}Minicurso Iniciando no Mundo Front-End - Dia 02 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 02 - SASPI {5}
 
Minicurso Iniciando no Mundo Front-End - Dia 03 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 03 - SASPI {5}Minicurso Iniciando no Mundo Front-End - Dia 03 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 03 - SASPI {5}
 
Minicurso Iniciando no Mundo Front-End - Dia 05 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 05 - SASPI {5}Minicurso Iniciando no Mundo Front-End - Dia 05 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 05 - SASPI {5}
 
Minicurso Iniciando no Mundo Front-End - Dia 04 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 04 - SASPI {5}Minicurso Iniciando no Mundo Front-End - Dia 04 - SASPI {5}
Minicurso Iniciando no Mundo Front-End - Dia 04 - SASPI {5}
 
Less
LessLess
Less
 

Gulp

  • 2. O que é? ● Ferramenta de build ● Javascript task-runner ● Automatizador de tarefas
  • 3. Porque usar um automatizador de tarefas ● Minificar imagens ● preprocessar CSS ● Enviar arquivos para FTP ● Comprimir javascript ● Criar sprites ● Etc...
  • 4.
  • 6. Grunt Gulp Um plugin pode ter mais de uma tarefa Cada plugin tem apenas uma tarefa Javascript Objects Node-like Plugins para funções básicas Funções básicas integradas
  • 7. Porque usar gulp? ● O Gulp é muito mais rápido que o Grunt por utilizar as streams do nodejs para escrever arquivos diretamente no disco. ● Código mais claro e limpo ● Menor curva de apredizado
  • 8. Grunt module.exports = function(grunt) { grunt.initConfig({ concat: { 'dist/all.js': ['src/*.js'] }, uglify: { 'dist/all.min.js': ['dist/all.js'] }, jshint: { files: ['gruntfile.js', 'src/*.js'] }, watch: { files: ['gruntfile.js', 'src/*.js'], tasks: ['jshint', 'concat', 'uglify'] } }); // Load Our Plugins grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-watch'); // Register Default Task grunt.registerTask('default', ['jshint', 'concat', 'uglify']); }; Gulp var gulp = require('gulp'), jshint = require('gulp-jshint'), concat = require('gulp-concat'), rename = require('gulp-rename'), uglify = require('gulp-uglify'); // Lint JSgulp.task('lint', function() { return gulp.src('src/*.js') .pipe(jshint()) .pipe(jshint.reporter('default')); }); // Concat & Minify JSgulp.task('minify', function(){ return gulp.src('src/*.js') .pipe(concat('all.js')) .pipe(gulp.dest('dist')) .pipe(rename('all.min.js')) .pipe(uglify()) .pipe(gulp.dest('dist')); }); // Watch Our Filesgulp.task('watch', function() { gulp.watch('src/*.js', ['lint', 'minify']); }); // Defaultgulp.task('default', ['lint', 'minify', 'watch']);
  • 9. Grunt module.exports = function(grunt) { // Project configuration. grunt.initConfig({ cssmin: { combine: { files: { 'style.min.css': ['style.css'] } } } }); // Load the plugin that provides the "uglify" task. grunt.loadNpmTasks('grunt-contrib-cssmin'); // Default task(s). grunt.registerTask('default', ['cssmin']); }; Gulp var gulp = require('gulp'), minify = require('gulp-minify-css'); gulp.task('styles', function() { return gulp.src('./style.css') .pipe(minify()) .pipe(gulp.dest('./dist/')); }); gulp.task('default', function() { gulp.run('styles'); });
  • 11. Funções Básicas gulp.task(name, fn) Registra uma função pelo seu nome.
  • 12. Funções Básicas gulp.task(name, fn) gulp.task('less', function () { gulp.src(path.less) .pipe(less()) .pipe(gulp.dest('contents/assets/css')); });
  • 13. Funções Básicas gulp.run(task, task, ...) DEPRECATED
  • 14. Funções Básicas gulp.watch(glob, fn) gulp.task('watch', function ( ) { gulp.watch('assets/less/*.less', ['less']); });
  • 15. Funções Básicas gulp.watch(glob, fn) Executa uma função quando um arquivo alterado bate com o glob.
  • 16. Funções Básicas gulp.src(glob) Retorna um caminho para acessar arquivos
  • 17. Funções Básicas gulp.src(glob) gulp.task('less', function () { gulp.src('assets/less/*.less') .pipe(less()) .pipe(gulp.dest('contents/assets/css')); });
  • 18. Funções Básicas gulp.dest(glob) Retorna um caminho para gravar arquivos
  • 19. Funções Básicas gulp.dest(glob) gulp.task('less', function () { gulp.src('assets/less/*.less') .pipe(less()) .pipe(gulp.dest('contents/assets/css')); });
  • 21. Dependências Node Node Package Manager
  • 22. Instalação npm init npm install gulp --save-dev
  • 24. Projeto var gulp = require('gulp'), less = require('gulp-less'), imagemin = require('gulp-imagemin'), uglify = require('gulp-uglify');
  • 25. Projeto gulp.task('less', function () { gulp.src(path.less) .pipe(less()) .pipe(gulp.dest('assets/css')); });
  • 26. Projeto gulp.task('images', function () { gulp.src(path.img) .pipe(imagemin()) .pipe(gulp.dest('build/assets/img')); });
  • 27. Projeto gulp.task('js', function () { gulp.src(path.js) .pipe(uglify({outSourceMap: true})) .pipe(gulp.dest('assets/js/min')); });
  • 28. Projeto gulp.task('watch', function () { gulp.watch(path.less, ['less']); });
  • 29. Projeto gulp.task('default', ['watch']); gulp.task('build', ['images', 'js', 'less']);
  • 30. Projeto - executando $ gulp // Executa a task ‘default’ $ gulp nomeTask // Executa a task chamada

Notes de l'éditeur

  1. Ferramenta de build: São usadas para definir tarefas para o desenvolvimento. Como pre-processar LESS ou SASS, tarefas de javascript como uglify.
  2. Ferramenta de build: São usadas para definir tarefas para o desenvolvimento. Como pre-processar LESS ou SASS, tarefas de javascript como uglify.
  3. Ferramenta de build: São usadas para definir tarefas para o desenvolvimento. Como pre-processar LESS ou SASS, tarefas de javascript como uglify.