为什么不在Gruntfile中为watch任务设置`task`选项?

时间:2014-12-23 07:57:07

标签: gruntjs grunt-contrib-watch

在Gruntfile.js中,我看到了这样的代码:

watch: {
 jsTest: {
    files: ['test/spec/{,*/}*.js'],
    tasks: ['newer:jshint:test', 'karma']
  },
  gruntfile: {
    files: ['Gruntfile.js']
  },
  livereload: {
    options: {
      livereload: '<%= connect.options.livereload %>'
    },
    files: [
      '<%= yeoman.app %>/{,*/}*.html',
      '.tmp/styles/{,*/}*.css',
      '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
    ]
  }
},

我真的无法理解这部分

gruntfile:{     文件:['Gruntfile.js']   },

以下livereload部分..

它似乎想要观看Gruntfile.js,但没有为其分配任何tasks选项。因此,Gruntfile.js更改时不会发生任何事情。那么将此添加到watch列表有什么意义呢?

1 个答案:

答案 0 :(得分:1)

版本0.4.0中的implemented a new feature允许在Gruntfile.js文件更改时重新加载所有Grunt配置。为此,不能指定任何任务。

换句话说,如果您要指定tasks选项,那么Grunt在更改时不会重新加载自己的配置。你拥有它的方式,当Gruntfile.js本身发生变化时,所有配置都会更新。

例如,如果您正在观看某些JS文件并更改了jsTest任务的配置(例如,您添加了要监视的新文件夹),那么因为您还在观察{{1您的新Gruntfile.js配置将自动重新加载,而无需停止并启动jsTest任务。