Grunt手表不工作

elk*_*med 9 javascript node.js gruntjs grunt-contrib-watch

我尝试在node.js中通过grunt运行监视任务,但它对我不起作用(这是我得到的):

$ grunt watch
warning: Maximum call stack size exceeded Use --force to continue.
Run Code Online (Sandbox Code Playgroud)

这是Gruntfile.js中watch任务的一部分:

watch: {
  less: {
    files: 'src/less/*.less',
    tasks: ['clean', 'recess', 'copy']
  },
  js: {
    files: 'src/js/*.js',
    tasks: ['clean', 'jshint', 'concat', 'uglify', 'copy']
  },
  theme: {
    files: 'src/theme/**',
    tasks: ['clean', 'recess', 'copy']
  },
  images: {
    files: 'src/images/*',
    tasks: ['clean', 'recess', 'copy']
  }
}

grunt.loadNpmTasks('grunt-contrib-watch');

grunt.registerTask('watch', ['watch']);
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 26

u_mulder是对的; 只需grunt.registerTask('watch', ['watch'])从代码中删除不必要的行,你就应该好好去.

编辑:发生这种情况是因为您正在注册调用自身的新任务.添加类似的行grunt.registerTask('watch', ['watch']);没有意义,因为它已经为您定义.如果不是这种情况,则必须调用grunt.registerTaskGruntfile配置中的每个任务.

在某些情况下,使用不同的名称对任务进行别名可能是有意义的.它将使用您指定的完全相同的配置进行调用,但是别名可以节省输入.例如,我喜欢使用'tasks'别名注册我的可用任务插件,因此grunt availabletasks我可以输入而不是输入grunt tasks,这可以节省一些打字.在这种情况下,您可以执行以下操作:

grunt.registerTask('w', ['watch']);
Run Code Online (Sandbox Code Playgroud)

然后您可以将其grunt w用作快捷方式grunt watch.