我正在运行两个简单的任务,每个任务运行时间<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)上运行
答案 0 :(得分:2)
更改文件后,请注意执行任务,但完成后,请重新加载模块(!)并再次观看。
详细看到问题:
grunt tasknamewatch --verbose
我已经尝试过关于监视任务的递归,但没有成功。
watch: {
...,
tasks: ['sometask', 'watch']
}
一个运行良好的简单解决方案是使用“grunt-este-watch”。您可以在此处阅读所需的步骤:https://stackoverflow.com/a/33920834/2741005
答案 1 :(得分:0)
是的,contrib-sass慢得多,认为可能导致了这个问题。我唯一能建议的是尽可能减少你正在运行的监视目标的数量;看起来你正在将app
的css复制到tmp
然后重新加载?可能更好地将你的sass直接保存到tmp
sass:dev
任务,就像你只运行两次。这就是我通常这样做的方式:
watch: {
sass: {
files: [
'styles/**/*.scss'
],
tasks: ['sass', 'copy:dev', 'cssmin']
},
css: {
options: {
livereload: true
},
files: [
'dist/css/master.css'
],
tasks: []
}
}
我不禁认为这是在完全不同的目标中运行副本的额外开销,当然你可以在该任务数组中运行任意数量的任务。 :)