title: Can't get Grunt `watch` task to run?
body: <p>Below is my Grunt file. My <code>watch:news</code> command doesn't appear to work and I'm not sure why.</p>
  
  <p>When I run in verbose mode I can see that all the NPM modules are loaded without an issue, and it verifies that the <code>watch:news</code> task is running as it should be but then it just doesn't pick up that any changes have occurred?</p>
  
  <p>I'm sure it's probably a typo or some small/easily fixable issue, I just can't spot it?</p>
  
  <p>Any help greatly appreciated!</p>
  
  <pre><code>module.exports = function (grunt) {
  
      /*
          Grunt installation:
          -------------------
              npm install -g grunt-cli
              npm install -g grunt-init
              npm init (creates a `package.json` file)
  
          Project Dependencies:
          ---------------------
              npm install grunt --save-dev
              npm install grunt-contrib-watch --save-dev
              npm install grunt-contrib-jshint --save-dev
              npm install grunt-contrib-uglify --save-dev
              npm install grunt-contrib-requirejs --save-dev
              npm install grunt-contrib-sass --save-dev
              npm install grunt-contrib-imagemin --save-dev
  
          Example Usage:
          --------------
              grunt -v
              grunt release -v
      */
  
      // Project configuration.
      grunt.initConfig({
  
          // Store your Package file so you can reference its specific data whenever necessary
          pkg: grunt.file.readJSON('package.json'),
  
          dir: {
              static: './tabloid/webapp/static/',
              static_js: '&lt;%= dir.static %&gt;' + 'js/',
              static_sass: '&lt;%= dir.static %&gt;' + 'sass/',
              static_css: '&lt;%= dir.static %&gt;' + 'stylesheets/',
              static_img: '&lt;%= dir.static %&gt;' + 'img/'
          },
  
          jshint: {
              files: ['&lt;%= dir.static %&gt;**/*.js',
                      '!&lt;%= dir.static_js %&gt;jasmine/lib/**/*.js', 
                      '!&lt;%= dir.static_js %&gt;build.js', 
                      '!&lt;%= dir.static_js %&gt;compiled/**/*.js', 
                      '!&lt;%= dir.static_js %&gt;locator/**/*.js', 
                      '!&lt;%= dir.static_js %&gt;msie/**/*.js', 
                      '!&lt;%= dir.static_js %&gt;vendor/**/*.js'], 
              options: {
                  curly:      true,
                  eqeqeq:     true,
                  immed:      true,
                  latedef:    true,
                  noarg:      true,
                  sub:        true,
                  undef:      true,
                  boss:       true,
                  eqnull:     true,
                  browser:    true,
                  multistr:   true,
                  newcap:     false,
  
                  globals: {
                      // AMD
                      module:       true,
                      require:      true,
                      requirejs:    true,
                      define:       true,
  
                      // Environments
                      console:      true,
  
                      // General Purpose Libraries
                      $:            true,
                      jQuery:       true,
                      EventEmitter: true,
  
                      // Testing
                      sinon:        true,
                      describe:     true,
                      it:           true,
                      expect:       true,
                      beforeEach:   true,
                      afterEach:    true
                  }
              }
          },
  
          requirejs: {
              compile: {
                  options: {
                      baseUrl: '&lt;%= dir.static_js %&gt;',
                      paths: {
                          'jquery-1': 'vendor/jquery-1/jquery.min',
                          'jquery': 'vendor/jquery-2/jquery.min',
                          'domReady': 'vendor/require/domReady',
                          'translation': 'module/translations/news'
                      },
                      exclude: ['config', 'jquery' ],
                      name: 'define',
                      out: '&lt;%= dir.static_js %&gt;compiled/all.js',
                      fileExclusionRegExp: /^\.|node_modules|Gruntfile|\.md|package.json/
                  }
              }
          },
  
          sass: {
              dist: {
                  options: {
                      style: 'compressed',
                      require: ['&lt;%= dir.static_sass %&gt;helpers/url64.rb']
                  },
                  expand: true,
                  cwd: '&lt;%= dir.static_sass %&gt;',
                  src: ['*.scss', '!_*.scss'],
                  dest: '&lt;%= dir.static_css %&gt;',
                  ext: '.css'
              },
              dev: {
                  options: {
                      style: 'expanded',
                      debugInfo: true,
                      lineNumbers: true,
                      require: ['&lt;%= dir.static_sass %&gt;helpers/url64.rb']
                  },
                  expand: true,
                  cwd: '&lt;%= dir.static_sass %&gt;',
                  src: ['*.scss', '!_*.scss'],
                  dest: '&lt;%= dir.static_css %&gt;',
                  ext: '.css'
              },
              news: {
                  options: {
                      style: 'expanded',
                      debugInfo: true,
                      lineNumbers: true,
                      require: ['&lt;%= dir.static_sass %&gt;helpers/url64.rb']
                  },
                  expand: true,
                  cwd: '&lt;%= dir.static_sass %&gt;/services/news/',
                  src: ['*.scss'],
                  dest: '&lt;%= dir.static_css %&gt;/services/news/',
                  ext: '.css'
              }
          },
  
          // `optimizationLevel` is only applied to PNG files (not JPG)
          imagemin: {
              png: {
                  options: {
                      optimizationLevel: 7
                  },
                  files: [
                      {
                          expand: true,
                          cwd: '&lt;%= dir.static %&gt;img/',
                          src: ['**/*.png'],
                          dest: '&lt;%= dir.static %&gt;img/',
                          ext: '.png'
                      }
                  ]
              },
              jpg: {
                  options: {
                      progressive: true
                  },
                  files: [
                      {
                          expand: true,
                          cwd: '&lt;%= dir.static %&gt;img/',
                          src: ['**/*.jpg'],
                          dest: '&lt;%= dir.static %&gt;img/',
                          ext: '.jpg'
                      }
                  ]
              }
          },
  
          // Run: `grunt watch -v` from command line for this section to take effect
          // The -v flag is for 'verbose' mode, this means you can see the Sass files being compiled along with other important information
          watch: {
              all: {
                  files: ['&lt;%= jshint.files %&gt;', '&lt;%= sass.dev.src %&gt;'],
                  tasks: ['default']
              },
              news: {
                  files: ['&lt;%= sass.news.src %&gt;'],
                  tasks: ['news']
              }
          }
  
      });
  
      // Load NPM Tasks
      grunt.loadNpmTasks('grunt-contrib-watch');
      grunt.loadNpmTasks('grunt-contrib-jshint');
      grunt.loadNpmTasks('grunt-contrib-uglify');
      grunt.loadNpmTasks('grunt-contrib-requirejs');
      grunt.loadNpmTasks('grunt-contrib-sass');
      grunt.loadNpmTasks('grunt-contrib-imagemin');
  
      // Default Task
      grunt.registerTask('default', ['jshint', 'sass:dev']);
  
      // News Task
      grunt.registerTask('news', ['sass:news']);
  
      // Release Task
      grunt.registerTask('release', ['jshint', 'requirejs', 'sass:dist', 'imagemin']);
  
  };
  </code></pre>