【问题标题】:Grunt watch not working咕噜手表不工作
【发布时间】:2013-10-05 11:31:40
【问题描述】:

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

$ grunt watch
warning: Maximum call stack size exceeded Use --force to continue.

这是 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']);

【问题讨论】:

标签: javascript node.js gruntjs grunt-contrib-watch


【解决方案1】:

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

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

在某些情况下,使用不同的名称为任务命名可能是有意义的。它将使用您指定的完全相同的配置调用它,但使用别名可以节省输入。例如,我喜欢用“tasks”别名注册我的available tasks plugin,所以我可以输入grunt availabletasks,而不是输入grunt tasks,这样可以节省一些打字时间。在这种情况下,您可以执行以下操作:

grunt.registerTask('w', ['watch']);

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

【讨论】:

    【解决方案2】:

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

    使用grunt.registerTask('watch', ['watch'])watch 正在调用自身,从而生成无限循环。 当你删除它时,它仍然有效,因为watch 是包的默认任务,我猜它是在你的文件的开头用grunt.loadNpmTasks('grunt-contrib-watch'); 调用的。您可以在 doc here 上进一步了解

    但是,让您对监视任务的自定义按您希望的方式工作会非常方便。为此,最好执行grunt.registerTask('watchfiles', ['watch']) 之类的操作。这样您就可以避免无限循环并使您的自定义工作正常进行。

    你会像$ grunt watchfiles这样运行任务,它会执行得很好。

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

    【讨论】:

    • Ben,请重现步骤,然后我们可以聊天。这里提出的问题不是理论上的,而是一直在阻止开发人员执行他的繁重任务的东西。所以尽可能实用,应该“实际地”解决您的评论无助于澄清问题。如果你重现错误,你也会得到无限循环。那么即使我错了,那也没有关系,因为你会更清楚地告诉我们所有人这个“黑暗”。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 2016-02-11
    • 1970-01-01
    • 2015-01-05
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多