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

Grunt.js

 Grunt.js

Matias Singers

January 29, 2014
Tweet

Other Decks in Programming

Transcript

  1. $ npm init $ npm install grunt --save-dev $ npm

    install grunt-contrib-connect --save-dev $ npm install grunt-contrib-watch --save-dev $ npm install grunt-contrib-sass --save-dev $ npm install load-grunt-tasks --save-dev Install Grunt plugins
  2. 1 { 2 "name": "my-project", 3 "version": "0.1.0", 4 "devDependencies":

    { 5 "grunt": "~0.4.2", 6 "grunt-contrib-connect": "~0.6.0", 7 "grunt-contrib-watch": "~0.5.3", 8 "grunt-contrib-sass": "~0.7.0", 9 "load-grunt-tasks": "~0.3.0" 10 } 11 } package.json https://npmjs.org/doc/json.html
  3. • Loading Grunt plugins and tasks • "wrapper" function •

    Project and task configuration • Custom tasks Gruntfile.js http://gruntjs.com/getting-started
  4. 1 module.exports = function(grunt) { 2 // instead of having

    multiple grunt.loadNpmTasks(''); 3 require('load-grunt-tasks')(grunt); 4 5 // Do grunt-related things in here 6 }; Gruntfile.js - wrapper http://gruntjs.com/getting-started
  5. 1 module.exports = function(grunt) { 2 require('load-grunt-tasks')(grunt); 3 4 grunt.initConfig({

    5 connect: { 6 options: { 7 port: 9001, 8 open: true, 9 hostname: 'localhost' 10 }, 11 server: { 12 // specific configs for the server task 13 } 14 }, 15 }); 16 }; Gruntfile.js - task configuration http://gruntjs.com/getting-started
  6. 1 // Default task(s). 2 grunt.registerTask('default', ['connect:server']); Gruntfile.js - custom

    tasks 1 // A very basic default task. 2 grunt.registerTask('default', 'Logger', function() { 3 grunt.log.write('Logging...').ok(); 4 }); http://gruntjs.com/getting-started
  7. Gruntfile.js - custom tasks 1 grunt.registerTask('server', [ 2 'clean:server', 3

    'sass:server', 4 'connect:server', 5 'watch' 6 ]); http://gruntjs.com/getting-started
  8. Concatenating 1 concat: { 2 'js/main.js': [ 3 'js/controllers/events.js', 4

    'js/controllers/login.js', 5 'js/controllers/menu.js' 6 ] 7 } module: grunt-contrib-concat
  9. Concatenating module: grunt-contrib-concat grunt-usemin + 1 <!-- build:js js/main.js -->

    2 <script src="js/controllers/events.js"></script> 3 <script src="js/controllers/login.js"></script> 4 <script src="js/controllers/menu.js"></script> 5 <!-- endbuild -->
  10. Watching files 1 watch: { 2 sass: { 3 files:

    ['styles/**/*.{scss,sass}'], 4 tasks: ['sass:server'] 5 }, 6 livereload: { 7 files: [ 8 'views/**/*.html', 9 'scripts/**/*.js', 10 'styles/**/*.css', 11 'img/**/*.{png,jpg,jpeg,gif,webp,svg}' 12 ], 13 options: { 14 livereload: true 15 } 16 } 17 } module: grunt-contrib-watch
  11. Watching files module: grunt-contrib-watch - Waiting... OK >> File "public/styles/main.sass"

    changed. ! Running "sass:app" (sass) task ! Done, without errors. ... Reload public/styles/main.css ... Completed in 0.178s at Tue Jan 28 2014 12:22:51 GMT+0800 (MYT)