首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >呼叫表不工作

呼叫表不工作
EN

Stack Overflow用户
提问于 2013-10-05 19:31:41
回答 2查看 12.1K关注 0票数 9

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

代码语言:javascript
复制
$ grunt watch
warning: Maximum call stack size exceeded Use --force to continue.

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

代码语言:javascript
复制
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']);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-05 19:58:58

u_mulder是正确的;只需从代码中删除不必要的grunt.registerTask('watch', ['watch'])行,就可以了。

编辑:发生这种情况是因为您正在注册一个调用自身的新任务。添加像grunt.registerTask('watch', ['watch']);这样的行是没有意义的,因为已经为您定义了它。如果不是这样,您将不得不为Gruntfile配置中的每个任务调用grunt.registerTask

在某些情况下,使用不同的名称为任务指定别名可能是有意义的。它将使用与您指定的完全相同的配置来调用,但是为它设置别名可以省去输入。例如,我喜欢用‘available tasks plugin’别名注册我的任务,所以我可以输入grunt tasks而不是grunt availabletasks,这样就省去了一些输入。在本例中,您可以执行以下操作:

代码语言:javascript
复制
grunt.registerTask('w', ['watch']);

然后,您可以使用grunt w作为grunt watch的快捷方式。

票数 26
EN

Stack Overflow用户

发布于 2014-02-28 18:33:55

实际上,删除grunt.registerTask('watch', ['watch'])会解决你的问题。但让我来帮你理解一下幕后发生的事情。

对于grunt.registerTask('watch', ['watch'])watch正在调用自己,这会生成无限循环。当你删除它时,它仍然有效,因为watch是包的默认任务,我猜它是在用grunt.loadNpmTasks('grunt-contrib-watch');乞求你的文件时调用的。您可以在here文档上更进一步

但是,让您定制的监视任务按您希望的方式工作将会非常方便。要实现这一点,最好做一些像grunt.registerTask('watchfiles', ['watch'])这样的事情。这样,您就避免了无限循环,并使您的自定义工作。

你可以像这样运行这个$ grunt watchfiles任务,它会运行的很好。

注意,所有的路径都必须是正确的,否则,如果任务指定了错误的路径,它将不会运行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19197303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档