3

I have been trying all day to get this livereload working but I am stumped. My grunt.js file is below and I made sure to add my script at the end of my html file. Any ideas?

module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-compass');
grunt.initConfig({
    uglify: {
        my_target: {
            files: {
                '_/js/script.js' : ['_/components/js/script.js']
            }//files
        } //mytarget
    }, //uglify
    watch: {
        options : { livereload: true },
        scripts: {
        files: ['_/components/js/*.js'],
        tasks: ['uglify']
    }, //scripts
    html: {
        files: ['*.html']
    }//html
    }//watch
}) // initconfig
grunt.registerTask('default', 'watch');
} //exports
Min Naing Oo
  • 1,085
  • 5
  • 24
  • 49
RayDavis
  • 31
  • 1
  • 2

4 Answers4

3

Try using browser extension for livereload.

Sergey Kalinichenko
  • 714,442
  • 84
  • 1,110
  • 1,523
4ega
  • 1,992
  • 2
  • 12
  • 15
2

I recorded a little screencast for you in gif animation. There I show how to install dependant modules by npm and build project with livereload enabled.

Screencast is located on https://i.stack.imgur.com/g5UVH.jpg

My versions of tools is NPM 1.4.21 and NodeJS v0.10.30

 

This is my Gruntfile.js with the comments

module.exports = function (grunt) {

  grunt.initConfig({

    pkg: grunt.file.readJSON('package.json'),

    // Delete contents before the full build
    clean: {
      dist: ['dist', 'dist/js'],
      html: ['dist/**/*.html']
    },

    /* Uglify javascript located in app/js/*.js
       And copy it to dist/js/main.js

       So all JS will be in one file.
       P.S. Remember that our js task in uglify is called "js" */
    uglify: {
      options: {
        report: 'min'
      },
      js: { // task to combine separate files into main.js
        files: {
          'dist/js/main.js': [
            'app/js/**/*.js'
          ]
        }
      }
    },

    copy: { // Just copy HTML files from app folder
      html: {
        files: [{
          expand: true,
          cwd: 'app/',
          src: ['**/*.html'],
          dest: 'dist/',
          filter: 'isFile'
        }]
      },
    },

    connect: { // Create server that will serve
               // requests to our compiled app
      dist: {
        options: {
          port: 3000,
          base: 'dist'
        }
      }
    },

    watch: { // Most instersting.
             // Will be watching for changes in JS and HTML.
      options: {
        livereload: true
      },
      js: { // Here you need to specify the same task name
            // as in uglify task we thought above
        files: ['app/js/**/*.js'], // Which files to uglify and copy
        tasks: ['newer:uglify'] // Do it
      },
      copy: { // Remove old html and copy new to dist folder
        files: ['app/**/*.html'],
        tasks: ['clean:html','newer:copy:html']
      }
    },

  });

  // Load all grunt modules with one command
  require('load-grunt-tasks')(grunt);

  grunt.registerTask('build', [
    'clean:dist', // Remove all
    'uglify', // Uglify all
    'copy' // Copy all HTML
  ]);

  grunt.registerTask('default', [
    'build', // Build the project
    'connect:dist', // Start server
    'watch' // Watch for changes
  ]);

};

And this is package.json with no comments (everything is clear enough)

{
  "engines": {
    "node": ">= 0.10.0"
  },
  "devDependencies": {
    "grunt": "~0.4.5",
    "grunt-contrib-clean": "0.5.0",
    "grunt-contrib-connect": "~0.8.0",
    "grunt-contrib-copy": "~0.5.0",
    "grunt-contrib-uglify": "~0.5.0",
    "grunt-contrib-watch": "~0.6.1",
    "grunt-newer": "~0.7.0",
    "load-grunt-tasks": "~0.6.0"
  },
  "scripts": {
    "preinstall": "npm cache clear"
  }
}
Johnius
  • 133
  • 3
1

There a few options to make live reload working:

Details:

https://github.com/gruntjs/grunt-contrib-watch#live-reloading

Lajos Veres
  • 13,595
  • 7
  • 43
  • 56
0

You don't really have to add any browser extension nor extra script tag, here is a Gulp based solution, see also https://stackoverflow.com/a/29729776/1614973 for an example of a Gulpfile.

Community
  • 1
  • 1
Dmitri Zaitsev
  • 13,548
  • 11
  • 76
  • 110