SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
Tooling
Aumentando a produtividade no desenvolvimento front-end para web
Eu
Herson Leite
Desenvolvedor de Software
Twitter: hersonls
Email: hersonls@gmail.com
Projetos
● Devitz
● PUG-MA
● Hacker Clube
O que é Tooling?
É o termo utilizado para o uso de
ferramentas ( tools ) para a
automatização/execução de
tarefas.
E como tooling pode aumentar a
produtividade?
Uma construtora
consegue executar
suas tarefas sem
boas ferramentas?
O mesmo acontece para o
desenvolvimento para web!
O que são tools
no
desenvolvimento
para web?
● Editores
● Task runner
● Package manager
● Scripts
● Virtualização
● Cloud-based tools
● Linters
● Pré-processadores
● Compiladores
● Comandos unix
Conhecendo alguns deles:
● Editores
● Package manager
● Live code
● Tasks
● Task runner
Editores
Atom
● Linters
● Snippets
● Code format
● Color picker
● Autocomplete
● Git
Editores - Atom - Linter
color-picker
Editores - Atom - Snippets
color-picker
Editores - Atom - Autocomplete
color-picker
Editores - Atom - Color Picker
color-picker
pigments
Editores - Atom - Code format
atom-beautify
Sem código formatado Código formatado
Editores - Atom - Máquina do tempo Git
atom-beautify
Package manager
Processo de configuração de
um plugin jQuery:
1. Ir ao site do plugin
2. Baixar arquivo comprimido
3. Descompactar
4. Copiar estilos
5. Copiar Javascript
6. Copiar imagens
7. Copiar fonts
8. Adicionar paths de estilos no HTML
9. Adicionar paths de scripts no HTML
1. Ir ao site do plugin
2. Baixar arquivo comprimido
3. Descompactar
4. Copiar para diretório de libs
5. Adicionar paths de estilos no HTML
6. Adicionar paths de scripts no HTML
Processo 1 Processo 2
Package manager ( gerenciador de pacotes ) é um utilitário que busca pacotes
de plugins/bibliotecas/frameworks em um determinado repositório, faz o
download, e configura uma nova instalação em um projeto.
Package managers para web
● npm
● bower
Bower
Processo de configuração de
um plugin jQuery com bower:
1. Ir ao site do plugin
2. Baixar arquivo comprimido
3. Descompactar
4. Copiar estilos
5. Copiar Javascript
6. Copiar imagens
7. Copiar fonts
8. Adicionar paths de estilos no HTML
9. Adicionar paths de scripts no HTML
1. $ bower install bootstrap4
2. Adicionar paths de estilos no HTML
3. Adicionar paths de scripts no HTML
Processo sem bower Processo com bower
Live code
É a visualização em "tempo-real" das modificações realizadas no projeto.
Browser-Sync
● Instala e roda em qualquer lugar
● Gratuito
● Fácil de integrar com task runners
● Network Throttle
● Interação síncrona ( Qualquer
interação é espelhada em todos os
navegadores )
● Sincronização de arquivos
● Histórico de URL
Browser-Sync
Tasks ( tarefas )
São comandos ou sequência de comando que são executados para atingir um
determinado objetivo.
Tasks ( tarefas ) ● Inserção automática de pacotes instalados no
projeto
● Conversão de SASS/LESS para CSS
● Autoprefixer de estilos CSS
● Compressão de estilos
● Conversão de ES5/CoffeeScript/TypeScript
para Javascript
● Compressão de javascripts
● Compressão de imagens
● Compressão de HTML
● Criação de build de projetos
● Browser-Sync
Task Runners
Gulp e Grunt
Tasks sem a utilização task runner
Tasks com a utilização de task runner
São ótimas ferramentas mas
nem tudo é perfeito
Contras da
utilização de
task runners
● Sintaxe própria
● Dependência de criadores de plugins
○ Adiciona uma camada extra de abstração
● Frustração na hora de fazer debugging
○ É o utilitário que está quebrado?
○ É o plugin do grunt que está quebrado?
○ É minha configuração que está quebrada?
○ Eu estou usando uma versão incompatível do plugin?
● Documentação de plugins fracas
O que fazer?
NPM Scripts
NPM Scripts
NPM Scripts
Porque não utilizar bash script ao invés de NPM Scripts?
Prós
NPM Scripts
● Hooks
● Argumentos
● Variáveis de configurações
● Piping
● Encadeamento
● Scripts centralizados em um único arquivo
● Descentralizar comandos quando complicados
● Módulos para executar todos os comando
sequenciais ou paralelamente
● Watcher
Fim

Mais conteúdo relacionado

Mais procurados

Gutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fasesGutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fasesGuga Alves
 
React Native - Produtividade e eficiência no desenvolvimento mobile
React Native - Produtividade e eficiência no desenvolvimento mobileReact Native - Produtividade e eficiência no desenvolvimento mobile
React Native - Produtividade e eficiência no desenvolvimento mobileDev PP
 
Botando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testesBotando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testeskinow
 
Comparando as Hypes - React & Vue
Comparando as Hypes - React & VueComparando as Hypes - React & Vue
Comparando as Hypes - React & VueHerbert Henrique
 
GitHub Boas Práticas
GitHub Boas PráticasGitHub Boas Práticas
GitHub Boas PráticasCDS
 
Uma alternativa ao GitFlow - FloripaJS
Uma alternativa ao GitFlow - FloripaJSUma alternativa ao GitFlow - FloripaJS
Uma alternativa ao GitFlow - FloripaJSBruno Luiz Silva
 
Ambiente livre para desenvolvimento web
Ambiente livre para desenvolvimento webAmbiente livre para desenvolvimento web
Ambiente livre para desenvolvimento webEvaldo Junior
 
Introdução ao Github actions - TDC Connections
Introdução ao Github actions - TDC ConnectionsIntrodução ao Github actions - TDC Connections
Introdução ao Github actions - TDC ConnectionsGuillaume Falourd
 
Daniel Filho: JavaScript Que Voa
Daniel Filho: JavaScript Que VoaDaniel Filho: JavaScript Que Voa
Daniel Filho: JavaScript Que VoaiMasters
 
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoDevops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoThiago Ferreira
 
Automação de build para frontend
Automação de build para frontendAutomação de build para frontend
Automação de build para frontendVanessa Me Tonini
 
Programadores: Kiln o controle de versão integrado que vocês esperavam
Programadores: Kiln o controle de versão integrado que vocês esperavamProgramadores: Kiln o controle de versão integrado que vocês esperavam
Programadores: Kiln o controle de versão integrado que vocês esperavamPaulo Mattos
 
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...Renato Groff
 
StructureMap, Injetor de Dependência
StructureMap, Injetor de DependênciaStructureMap, Injetor de Dependência
StructureMap, Injetor de DependênciaRodolfo Fadino Junior
 
Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Leonardo Kobus
 

Mais procurados (20)

Onde posso ir como “dev”
Onde posso ir como “dev”Onde posso ir como “dev”
Onde posso ir como “dev”
 
Gutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fasesGutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fases
 
React Native - Produtividade e eficiência no desenvolvimento mobile
React Native - Produtividade e eficiência no desenvolvimento mobileReact Native - Produtividade e eficiência no desenvolvimento mobile
React Native - Produtividade e eficiência no desenvolvimento mobile
 
Botando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testesBotando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testes
 
Comparando as Hypes - React & Vue
Comparando as Hypes - React & VueComparando as Hypes - React & Vue
Comparando as Hypes - React & Vue
 
Criando sua stack de deploy php com git, jenkins e ansible
Criando sua stack de deploy php com git, jenkins e ansibleCriando sua stack de deploy php com git, jenkins e ansible
Criando sua stack de deploy php com git, jenkins e ansible
 
GitHub Boas Práticas
GitHub Boas PráticasGitHub Boas Práticas
GitHub Boas Práticas
 
Uma alternativa ao GitFlow - FloripaJS
Uma alternativa ao GitFlow - FloripaJSUma alternativa ao GitFlow - FloripaJS
Uma alternativa ao GitFlow - FloripaJS
 
Ambiente livre para desenvolvimento web
Ambiente livre para desenvolvimento webAmbiente livre para desenvolvimento web
Ambiente livre para desenvolvimento web
 
Introdução ao Github actions - TDC Connections
Introdução ao Github actions - TDC ConnectionsIntrodução ao Github actions - TDC Connections
Introdução ao Github actions - TDC Connections
 
Daniel Filho: JavaScript Que Voa
Daniel Filho: JavaScript Que VoaDaniel Filho: JavaScript Que Voa
Daniel Filho: JavaScript Que Voa
 
Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoDevops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
 
Automação de build para frontend
Automação de build para frontendAutomação de build para frontend
Automação de build para frontend
 
Programadores: Kiln o controle de versão integrado que vocês esperavam
Programadores: Kiln o controle de versão integrado que vocês esperavamProgramadores: Kiln o controle de versão integrado que vocês esperavam
Programadores: Kiln o controle de versão integrado que vocês esperavam
 
Bricklayer
BricklayerBricklayer
Bricklayer
 
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
 
StructureMap, Injetor de Dependência
StructureMap, Injetor de DependênciaStructureMap, Injetor de Dependência
StructureMap, Injetor de Dependência
 
Jenkins
JenkinsJenkins
Jenkins
 
Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Jenkins integrando e estendendo.
Jenkins integrando e estendendo.
 

Semelhante a Front-end Tooling - Dicas de ferramentas para melhorar a produtividade

SonarQube
SonarQubeSonarQube
SonarQubeCDS
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
Sonarqube
SonarqubeSonarqube
SonarqubeCDS
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorFelipe Pedroso
 
Front-end: O que é necessário saber ?
Front-end: O que é necessário saber ?Front-end: O que é necessário saber ?
Front-end: O que é necessário saber ?Rafael Pazini
 
Web Development em 2015
Web Development em 2015Web Development em 2015
Web Development em 2015Emanuel Santos
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 
Docker como super comando
Docker como super comandoDocker como super comando
Docker como super comandoRafael Gomes
 
Desenvolvimento web com software livre
Desenvolvimento web com software livreDesenvolvimento web com software livre
Desenvolvimento web com software livreRuan Carvalho
 
Desenvolvimento web com Software Livre
Desenvolvimento web com Software LivreDesenvolvimento web com Software Livre
Desenvolvimento web com Software LivreRuan Carvalho
 
Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Denis Santos
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 

Semelhante a Front-end Tooling - Dicas de ferramentas para melhorar a produtividade (20)

SonarQube
SonarQubeSonarQube
SonarQube
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
Front-end: O que é necessário saber ?
Front-end: O que é necessário saber ?Front-end: O que é necessário saber ?
Front-end: O que é necessário saber ?
 
Web Development em 2015
Web Development em 2015Web Development em 2015
Web Development em 2015
 
Git e redmine
Git e redmineGit e redmine
Git e redmine
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
São Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOpsSão Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOps
 
Docker como super comando
Docker como super comandoDocker como super comando
Docker como super comando
 
Git para Designers
Git para DesignersGit para Designers
Git para Designers
 
PHP: Como não programar em POG
PHP: Como não programar em POGPHP: Como não programar em POG
PHP: Como não programar em POG
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Desenvolvimento web com software livre
Desenvolvimento web com software livreDesenvolvimento web com software livre
Desenvolvimento web com software livre
 
Desenvolvimento web com Software Livre
Desenvolvimento web com Software LivreDesenvolvimento web com Software Livre
Desenvolvimento web com Software Livre
 
Django
DjangoDjango
Django
 
Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017
 
Csharp
CsharpCsharp
Csharp
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 

Front-end Tooling - Dicas de ferramentas para melhorar a produtividade

  • 1. Tooling Aumentando a produtividade no desenvolvimento front-end para web
  • 2. Eu Herson Leite Desenvolvedor de Software Twitter: hersonls Email: hersonls@gmail.com
  • 4. O que é Tooling?
  • 5. É o termo utilizado para o uso de ferramentas ( tools ) para a automatização/execução de tarefas.
  • 6. E como tooling pode aumentar a produtividade?
  • 7. Uma construtora consegue executar suas tarefas sem boas ferramentas?
  • 8. O mesmo acontece para o desenvolvimento para web!
  • 9. O que são tools no desenvolvimento para web? ● Editores ● Task runner ● Package manager ● Scripts ● Virtualização ● Cloud-based tools ● Linters ● Pré-processadores ● Compiladores ● Comandos unix
  • 10. Conhecendo alguns deles: ● Editores ● Package manager ● Live code ● Tasks ● Task runner
  • 12. Atom ● Linters ● Snippets ● Code format ● Color picker ● Autocomplete ● Git
  • 13. Editores - Atom - Linter color-picker
  • 14. Editores - Atom - Snippets color-picker
  • 15. Editores - Atom - Autocomplete color-picker
  • 16. Editores - Atom - Color Picker color-picker pigments
  • 17. Editores - Atom - Code format atom-beautify Sem código formatado Código formatado
  • 18. Editores - Atom - Máquina do tempo Git atom-beautify
  • 20. Processo de configuração de um plugin jQuery: 1. Ir ao site do plugin 2. Baixar arquivo comprimido 3. Descompactar 4. Copiar estilos 5. Copiar Javascript 6. Copiar imagens 7. Copiar fonts 8. Adicionar paths de estilos no HTML 9. Adicionar paths de scripts no HTML 1. Ir ao site do plugin 2. Baixar arquivo comprimido 3. Descompactar 4. Copiar para diretório de libs 5. Adicionar paths de estilos no HTML 6. Adicionar paths de scripts no HTML Processo 1 Processo 2
  • 21. Package manager ( gerenciador de pacotes ) é um utilitário que busca pacotes de plugins/bibliotecas/frameworks em um determinado repositório, faz o download, e configura uma nova instalação em um projeto.
  • 22. Package managers para web ● npm ● bower
  • 23. Bower
  • 24. Processo de configuração de um plugin jQuery com bower: 1. Ir ao site do plugin 2. Baixar arquivo comprimido 3. Descompactar 4. Copiar estilos 5. Copiar Javascript 6. Copiar imagens 7. Copiar fonts 8. Adicionar paths de estilos no HTML 9. Adicionar paths de scripts no HTML 1. $ bower install bootstrap4 2. Adicionar paths de estilos no HTML 3. Adicionar paths de scripts no HTML Processo sem bower Processo com bower
  • 26. É a visualização em "tempo-real" das modificações realizadas no projeto.
  • 27. Browser-Sync ● Instala e roda em qualquer lugar ● Gratuito ● Fácil de integrar com task runners ● Network Throttle ● Interação síncrona ( Qualquer interação é espelhada em todos os navegadores ) ● Sincronização de arquivos ● Histórico de URL
  • 30. São comandos ou sequência de comando que são executados para atingir um determinado objetivo.
  • 31. Tasks ( tarefas ) ● Inserção automática de pacotes instalados no projeto ● Conversão de SASS/LESS para CSS ● Autoprefixer de estilos CSS ● Compressão de estilos ● Conversão de ES5/CoffeeScript/TypeScript para Javascript ● Compressão de javascripts ● Compressão de imagens ● Compressão de HTML ● Criação de build de projetos ● Browser-Sync
  • 34. Tasks sem a utilização task runner
  • 35. Tasks com a utilização de task runner
  • 36. São ótimas ferramentas mas nem tudo é perfeito
  • 37. Contras da utilização de task runners ● Sintaxe própria ● Dependência de criadores de plugins ○ Adiciona uma camada extra de abstração ● Frustração na hora de fazer debugging ○ É o utilitário que está quebrado? ○ É o plugin do grunt que está quebrado? ○ É minha configuração que está quebrada? ○ Eu estou usando uma versão incompatível do plugin? ● Documentação de plugins fracas
  • 42. Porque não utilizar bash script ao invés de NPM Scripts?
  • 43. Prós NPM Scripts ● Hooks ● Argumentos ● Variáveis de configurações ● Piping ● Encadeamento ● Scripts centralizados em um único arquivo ● Descentralizar comandos quando complicados ● Módulos para executar todos os comando sequenciais ou paralelamente ● Watcher
  • 44. Fim