Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Esse cara é o Grunt
Search
Davidson Fellipe
December 15, 2013
Programming
890
9
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Esse cara é o Grunt
Davidson Fellipe
December 15, 2013
More Decks by Davidson Fellipe
See All by Davidson Fellipe
Adventures from Enzyme to React Testing Library
fellipe
1
410
O melhor da monitoração de web performance
fellipe
0
480
Guia do Front-end das galáxias
fellipe
3
290
Workflow para desenvolvimento web e mobile usando gruntjs
fellipe
2
170
Como é trabalhar na Globo.com?
fellipe
3
140
Guia prático de desenvolvimento front-end para django devs
fellipe
1
200
Practical guide for front-end development for Django Devs
fellipe
0
140
It's Javascript Time
fellipe
6
560
Frontend Engineers: Passado, presente e futuro
fellipe
2
570
Other Decks in Programming
See All in Programming
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.2k
phperだってパンチカードでコーディングしたい
o0h
PRO
0
410
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
270
ジョジョの世界をXRで再現する
mofurune
0
180
Vue Fes Japan の “作る側”に関わってみて
naokihaba
1
180
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
4.5k
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
1.1k
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
APNsからLive Activityを開始する話
yumnumm
0
170
R8 の設定見直しでアプリサイズ削減
andpad
0
230
Domain-Driven Transformation
hschwentner
2
2.3k
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
55
13k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Test your architecture with Archunit
thirion
2
2.5k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
880
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2.1k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
490
Deep Space Network (abreviated)
tonyrice
0
380
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
750
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Transcript
grunt esse cara é o @almirfilho @davidsonfellipe
None
@almirfilho @davidsonfellipe
globo .com
do workflow rei o front-end
linha de comando nodejs automatizador de tarefas
o grunt não é o único
ant java make shell cake coffeescript rake ruby
downloads 2013
100k 200k 300k downloads 2013 nov out set ago jul
jun mai abr mar fev jan
None
automatizamos? por que
repetitivo minimizar trabalho
detalhes muitos para lembrar
conversão frameworks e libs compilação linting testes minificação
complexos útil para projetos
rodar testes pré-processadores:dev js/css lint web server scaffolding otimizar imagens
criar sprites live reloading minificação e obfuscação concatenação pré-processadores:prod gerar release deploy dev prod
eficiência! produtividade!
paz de espírito
grunt iniciando com
node.js & npm primeiro as coisas primeiras
grunt-cli instalação global instalação local configuração configuração grunt & tools
package.json Gruntfile.js
$ npm install -g grunt-cli grunt-cli instalação global
{ "name": "dave-fulero", "version": "0.1.0", "devDependencies": { "grunt": "~0.4.2", "grunt-contrib-uglify":
"~0.2.2" } } package.json configuração
$ npm install grunt & tools instalação local
--save-dev $ npm install nome-pacote --save-dev
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.js configuração
grunt.initConfig({ uglify: { options: { banner: ‘/* dave fulêro */\n’
}, build: { src: ‘src/<%= pkg.name %>.js’, dest: ‘build/<%= pkg.name %>.min.js’ } } });
pop quem é
concatenação de arquivos a.js e.js i.js o.js u.js vogais.js
$ npm install grunt-contrib-concat --save-dev grunt-contrib-concat o cara que concatena
seus arquivos
grunt.initConfig({ concat: { options: { separator: ';', }, dist: {
src: ['src/a.js', 'src/e.js'], dest: 'build/vogais.js', } } }); concat no Gruntfile.js
$ grunt concat concatenação rodando manualmente
obfuscação e minificação de scripts all.min.js all.js
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
$ npm install grunt-contrib-uglify --save-dev grunt-contrib-uglify o cara que comprime
seus arquivos
grunt.initConfig({ uglify: { build: { src: 'src/all.js', dest: 'build/all.min.js' }
} }); uglify no Gruntfile.js
$ grunt uglify obfuscação e minificação rodando manualmente
pré-processadores de código widget.scss widget.css
$ npm install grunt-contrib-compass --save-dev grunt-contrib-compass o cara que compila
seu sass
grunt.initConfig({ compass: { dev: { options: { sassDir: 'src/scss', cssDir:
'build/css', imagesDir: 'src/img', generatedImagesDir: 'build/img' } }, prod: { /* ... */ } }}); compass no Gruntfile.js
grunt.initConfig({ compass: { dev: { /* ... */ }, prod:
{ options: { sassDir: 'src/scss', cssDir: 'build/css', imagesDir: 'src/img', generatedImagesDir: 'build/img', outputStyle: 'compressed', noLineComments: true }}}}); compass no Gruntfile.js
$ grunt compass:dev compilação de sass $ grunt compass:prod rodando
manualmente
pré-processadores grunt-contrib-sass sass stylus less coffeescript grunt-contrib-stylus grunt-contrib-less grunt-contrib-coffee
testes automatizados specs sucesso erro
$ npm install grunt-contrib-jasmine --save-dev grunt-contrib-jasmine o cara que testa
seu código e te avisa
grunt.initConfig({ jasmine: { src: 'src/**/*.js', options: { specs: 'spec/*Spec.js', helpers:
'spec/*Helper.js' } } }); jasmine no Gruntfile.js
$ grunt jasmine rodando manualmente testes automatizados
suites de testes grunt-contrib-jasmine jasmine mocha qunit grunt-simple-mocha grunt-contrib-qunit
watch fique de olho widget.scss widget.css save file all.min.js all.js
$ npm install grunt-contrib-watch --save-dev grunt-contrib-watch o cara que vigia
tudo para você
grunt.initConfig({ watch: { build: { files: ['src/**/*.{scss, js}'], tasks: [
'compass:dev', 'concat', 'uglify' ] } } }); watch no Gruntfile.js
testes pré-processadores js/css lint criar sprites live reloading concatenação tarefas
comuns para watch
na prática globo esporte setup
6 semanas!
faça suas escolhas sabiamente
globo .com /talentos github.com/globocom/ IWantToWorkAtGloboCom
obrigado!
obrigado! /almirfilho /almirfilho /davidsonfellipe /davidsonfellipe
obrigado!