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

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

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.

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