纠错后Grunt手表没有少跑

时间:2016-05-06 08:59:44

标签: javascript gruntjs grunt-contrib-watch

我遇到了Grunt Watch目前在编译错误纠正后没有重新运行任务的问题。

我收到错误消息,但是在纠正错误之后,grunt说文件已被更改,但在此之后没有任务运行。

Grunt档案:

watch: {
        less: {
            files: ['public/assets/less/**/*.less'],
            tasks: ['css'],
            options: {
                atBegin: true,
                nospawn: true
            }
        },
        scripts: {
            files: [
                'public/assets/js/homepage.js'
            ],
            tasks: ['jsApp'],
            options: {
                nospawn: true,
            }
        }
    },

错误日志:

>> ParseError: Unrecognised input in public/assets/less/template.less on line 114, column 31:
>> 114         @media screen and (max-width: 767px) {
>> 115             left: 0;
Warning: Error compiling public/assets/less/main.less
// ----- Corrected the file here, saved again -----
>> File "public/assets/less/template.less" changed.

文件结束。在此之后没有任何事情。

3 个答案:

答案 0 :(得分:2)

这是grunt-contrib-watch包spawn函数的一个问题,你可能想要删除nospawn。如果你还没有,你可能想尝试1.0.0版的grunt手表。

此问题已在之前讨论过 https://github.com/gruntjs/grunt-contrib-watch/issues/58

另外,请注意文档:

  

不产生任务运行会使手表更容易失败   请根据需要使用。

在你的位置我会先升级,看看我有最新版本的grunt,grunt watch和grunt less。如果这不能解决问题,我会让它正常生成。

答案 1 :(得分:1)

您可以像这样简化文件:

//src ===============================
                var src;
                config.src = src = {
                     libFolder       : 'lib/**/*.js',
                     lessFolder      : 'less/**/*.less',

                };

//Watch ===============================
                config.watch = {
                     scripts: {
                        files: ["<%= src.libFolder %>", "<%= src.lessFolder %>"]
                        ,tasks: ["dev", "less:dist"]

                     }
                }

您需要插入要观看的任务和文件:

在这种情况下上面咕噜咕噜地看着来自lib和更少文件夹的所有文件,如果我做任何更改,那么grunt将运行任务。

同样你需要在那里插入任务,直到你停止咕噜咕噜的手表。

在那种情况下,我正在运行dev ans less:dist。同时。

我正在运行的开发人员:'精灵','imagemin','concat:dev','uglify',

grunt.registerTask('dev',['sprite','imagemin','concat:dev', 'uglify']);

所以我在grunt watch中插入了这个任务,所以grunt会看着运行所有任务而没有错误。

我希望这对你有所帮助。

答案 2 :(得分:1)

我遇到了完全相同的问题( grunt-contrib-watch grunt-contrib-less 的组合)。

一个解决方案设置为spawn: true,但构建时间要长得多。

我发现使用最新版本的 grunt-contrib-less (自1.0.0以来的所有版本)时会出现此问题。使用grunt-contrib-less 0.12.0我在纠正错误后成功继续观看时没有问题。