Dav*_*veJ 9 node.js gruntjs yeoman grunt-contrib-watch
我正在运行两个运行时间<100毫秒的简单任务,但是当在watch命令下运行时,两个组合任务总共需要大约8秒(每个任务的开销似乎为3.5秒).我正在使用它进行实时重载以进行开发,我发现它非常令人沮丧.我尝试过设置spawn,false但这似乎打破了它,并没有运行任何相关的任务.
这是更改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)
是的,contrib-sass 慢得多,我认为这可能是导致问题的原因。我唯一可以建议的是尽量减少正在运行的监视目标的数量;看起来您正在将 css 从appinto复制tmp然后重新加载?可能最好将你的 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: []
    }
}
我忍不住认为这是在不同目标中运行副本的额外开销,当然您可以在该任务数组中运行任意数量的任务。:)