Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Não seja um desenvolvedor Chucro! Como economiz...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Bruno Azevedo Bruno Azevedo
November 30, 2013

Não seja um desenvolvedor Chucro! Como economizar tempo e melhorar os seus projetos utilizando Grunt

Um guia prático de utilização da ferramenta Grunt. Veremos como o nosso desenvolvimento pode se tornar mais fácil e quanto tempo podemos economizar automatizado tarefas repetitivas.

Avatar for Bruno Azevedo

Bruno Azevedo

November 30, 2013
Tweet

More Decks by Bruno Azevedo

Other Decks in Technology

Transcript

  1. Instala o Grunt global e certifica que a versão do

    Grunt a ser usada é a do respectivo projeto Grunt CLI npm install -g grunt-cli domingo, 1 de dezembro de 13
  2. { "name" : "frontinpoa", "version" : "0.0.0", "description" : "Grunt

    para não ser chucro" } package.json domingo, 1 de dezembro de 13
  3. { "name" : "frontinpoa", "version" : "0.0.0", "description" : "Grunt

    para não ser chucro", "devDependencies" : { "grunt": "~0.4.2" } } package.json domingo, 1 de dezembro de 13
  4. Todas as chamadas e comportamentos dos teus módulos vão ser

    editadas aqui Gruntfile.js npm install grunt --save-dev domingo, 1 de dezembro de 13
  5. module.exports = function (grunt) { grunt.initConfig({ cssmin : { task

    : { files : { 'assets/css/main.css': ['dev/css/main.css'] } } } }); grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.registerTask('default', ['cssmin']); }; Gruntfile.js domingo, 1 de dezembro de 13
  6. Processa os arquivos .SCSS para CSS SASS npm install grunt-contrib-sass

    --save-dev * Não esquecer de instalar o SASS! domingo, 1 de dezembro de 13
  7. sass : { dist : { files : { 'dev/css/main.css':

    'dev/sass/main-sass.scss' }, options : { debugInfo : true, sourcemap : true } } } SASS domingo, 1 de dezembro de 13
  8. Serve para o grunt rodar tarefas quando arquivos selecionado forem

    modificados. Watch npm install grunt-contrib-watch --save-dev domingo, 1 de dezembro de 13
  9. watch : { scripts : { files : ['dev/sass/*.scss'], tasks

    : ['sass'] } } Watch domingo, 1 de dezembro de 13
  10. Recarrega o browser quando algum arquivo selecionado for modificado. Live

    Reload * Instalar o plugin de acordo com o browser domingo, 1 de dezembro de 13
  11. watch: { scripts: { files: ['dev/sass/*.scss'], tasks: ['sass'] }, livereload

    : { options: { livereload: true }, files: ['dev/css/main.css', 'dev/js/main.js', 'index.html'], } } Live Reload domingo, 1 de dezembro de 13
  12. jshint : { options : { eqnull : true, unused

    : true, curly : true, plusplus : true, strict : true }, files: { src: ['dev/js/main.js'] } } JSHint domingo, 1 de dezembro de 13
  13. Adiciona vendor-prefix ao CSS de acordo com o caniuse.com Autoprefixer

    npm install grunt-autoprefixer --save-dev domingo, 1 de dezembro de 13
  14. autoprefixer : { file : { src : 'dev/css/main.css' }

    } Autoprefixer domingo, 1 de dezembro de 13
  15. Converte um grupo de imagens para sprite e gera seu

    respectivo CSS Spritesmith npm install grunt-spritesmith --save-dev domingo, 1 de dezembro de 13
  16. sprite : { all : { src : 'dev/img/sprites/*.png', destImg

    : 'dev/img/ico-general.png', destCSS : 'dev/sass/sprites.scss', cssFormat : 'css' } } Spritesmith domingo, 1 de dezembro de 13
  17. Válida o nosso HTML de acordo com as especificações do

    W3C HTML Validation npm install grunt-html-validation --save-dev domingo, 1 de dezembro de 13
  18. validation : { options : { reportpath : false, reset

    : true }, files : { src : ['index.html'] } } HTML Validation domingo, 1 de dezembro de 13
  19. imagemin : { dist : { files : [{ expand

    : true, cwd : 'dev/img', src : ['*', '!/sprites/**'], dest : 'assets/img' }] } } Imagemin domingo, 1 de dezembro de 13
  20. Realiza a tarefa somente se o arquivo de origem for

    mais novo que o arquivo de destino Newer npm install grunt-newer --save-dev domingo, 1 de dezembro de 13
  21. grunt.registerTask('image', ['newer:imagemin']); Newer watch : { hinter : { files

    : ['dev/js/*.js'], tasks : ['newer:jshint'] } } domingo, 1 de dezembro de 13
  22. SVGmin svgmin : { dist : { files : [{

    expand : true, cwd : 'dev/img', src : ['**/*.svg'], dest : 'assets/img', ext : '.svg' }] } } domingo, 1 de dezembro de 13
  23. minifica e concatena os arquivos js utilizando o UglifyJS Uglify

    npm install contrib-uglify --save-dev domingo, 1 de dezembro de 13
  24. Uglify uglify : { options : { banner : '/*Curious

    about the source? Go to /dev instead :)*/' }, my_target : { files : { 'assets/js/main.js': ['dev/js/main.js'] } } } domingo, 1 de dezembro de 13
  25. CSSMIN cssmin : { task : { options : {

    banner : '/* My minified css file */' }, files : { 'assets/css/main.css': ['dev/css/main.css'] } } } domingo, 1 de dezembro de 13
  26. Replace replace : { dist : { options : {

    patterns : [{ match : /dev\/js\/main.js/, replacement : 'assets/js/main' + randomNumber + '.js', expression : true }] }, files : [{ src : ['index-dev.html'], dest : 'index.html' }] } } domingo, 1 de dezembro de 13
  27. rsync deployRsync : { home : { options : {

    src : '', dest : 'www/frontinpoa', host : '[email protected]', recursive : true, syncDest : true, exclude : [".git*","node_modules"] } } } domingo, 1 de dezembro de 13
  28. Deploy: - Validação HTML, CSS e JS; - Prefixos no

    CSS; - Otimização de SVG, PNG, JPEG, GIF... - Insumos concatenados e minificados - Cache invalidado - Publicação em produção (Sem FTP!) domingo, 1 de dezembro de 13