9

我正在运行两个运行时间 <100 毫秒的简单任务,但是当在 watch 命令下运行时,这两个组合任务总共需要大约 8 秒(每个任务似乎有 3.5 秒的开销)。我将它与 live-reload 一起用于开发,我发现它非常令人沮丧。我尝试设置spawnfalse,但这似乎破坏了它,并且没有运行任何相关任务。

这是更改 sass 文件时的示例输出。

>> File "app/styles/main.scss" changed.

File "app/styles/main.css" created.

Done, without errors.

Elapsed time
loading tasks   4ms  ▇▇▇▇▇ 9%
sass            1ms  ▇▇ 2%
sass:dist      39ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 89%
Total 44ms
Completed in 3.862s at Mon Nov 18 2013 17:05:57 GMT+0000 (GMT) - Waiting...
OK
>> File "app/styles/main.css" changed.

Running "copy:styles" (copy) task
Copied 1 files

Done, without errors.

Elapsed time
loading tasks   4ms  ▇▇▇▇▇▇▇▇▇▇▇▇ 24%
copy:styles    13ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 76%
Total 17ms
Completed in 3.704s at Mon Nov 18 2013 17:06:01 GMT+0000 (GMT) - Waiting...
OK
>> File ".tmp/styles/main.css" changed.

... Reload .tmp/styles/main.css ...
... Reload .tmp/styles/main.css ...
Completed in 0.000s at Mon Nov 18 2013 17:06:01 GMT+0000 (GMT) - Waiting...

在 node.js 0.10.20 上使用 grunt 0.4.1(和 grunt-cli 0.1.11)。在 2012 Macbook Air (OS X 10.8.5) 上运行

4

2 回答 2

2

文件更改后,观看执行任务,但完成后,观看重新加载模块(!)并再次观看。

详细查看问题:

grunt tasknamewatch --verbose

我已经尝试对 watch 任务进行递归,但没有成功。

watch: {
    ...,
    tasks: ['sometask', 'watch']
}

一个运行良好的简单解决方案是使用“grunt-este-watch”。您可以在此处阅读所需的步骤:https ://stackoverflow.com/a/33920834/2741005

于 2015-11-26T09:57:43.037 回答
0

是的,contrib-sass 慢得多,认为这可能是导致问题的原因。我唯一能建议的就是尽量减少你正在运行的监视目标的数量;看起来您正在将 css 从复制apptmp然后重新加载?将您的 sass 直接保存到任务之tmp类的东西中可能会更好sass:dev,这样您只运行 watch 两次。我通常是这样做的:

watch: {
    sass: {
        files: [
            'styles/**/*.scss'
        ],
        tasks: ['sass', 'copy:dev', 'cssmin']
    },

    css: {
        options: {
            livereload: true
        },
        files: [
            'dist/css/master.css'
        ],
        tasks: []
    }
}

我不禁认为这是在完全不同的目标中运行副本的额外开销,当然您可以在该任务数组中运行任意数量的任务。:)

于 2013-11-21T20:39:13.150 回答