Grunt需要很长时间才能编译css文件,我不确定这是否正常但是常规罗盘手表大约需要5秒钟。
所以问题是,如果有任何方法可以加快Grunt的编译时间,或者只是坚持使用罗盘手表?
Running "compass:dist" (compass) task
♀unchanged images/sprite-sf580a96666.png
overwrite stylesheets/app.css (3.263s)
unchanged images/sprite-sf580a96666.png
overwrite stylesheets/app_fr.css (3.289s)
Compilation took 11.116s
Running "watch" task
Completed in 13.974s at Wed Dec 18 2013 13:53:05 GMT-0500 (Eastern Standard Time- Waiting...
OK
>> File "scss\_core.scss" changed.
Gruntfile.js:
compass: {
dist: {
options: {
config: 'config.rb'
}
}
},
watch: {
sass: {
files: ['scss/*.scss'],
tasks: ['compass:dist'],
options: {
spawn: false,
}
},
scripts: {
files: ['js/*.js'],
tasks: ['concat', 'uglify'],
options: {
spawn: false,
}
}
}
});
答案 0 :(得分:16)
除了Simon提到的关于grunt-contrib-compass watch
选项的内容之外,您还可以使用grunt-concurrent来运行两个进程,有效grunt watch
和compass watch
彼此:
concurrent: {
watch: {
tasks: ['watch', 'compass:watch'],
options: {
logConcurrentOutput: true
}
}
},
compass: {
watch: {
options: {
watch: true
}
}
}
如果您想在构建,部署或需要compile
而不是watch
的任何其他内容时从Grunt运行指南针,则需要进行第二次指南针任务并使用:
compass: {
// Compass grunt module requires a named target property with options.
compile: {
options: {}
}
}
答案 1 :(得分:5)
好吧,你can watch using the Grunt-contrib-compass watch
option。这将产生指南针表,这样你就会有更好的表现。虽然这不允许您观看多种类型的文件(例如,如果您还注意.coffee文件或总是重建js等)。
如果您绝对需要grunt-contrib-watch
,请确保使用grunt任务激活sass缓存。从你在这里粘贴的配置看起来就像是。但是缓存问题通常是指南针需要很长时间才能编译的原因;如果我是你,我会仔细查看我的Gruntfile.js。
此外,许多精灵和图像处理方法可能需要很长时间才能处理。
答案 2 :(得分:2)
在这方面可能有点晚了,但如果这有助于任何人:
我发现与grunt-contrib-watch和sass相同的糟糕表现。解决这个问题的最佳方法似乎是使用不同的手表插件。我发现grunt-watch-nospawn(与grunt-contrib-watch插件相对)编译sass的速度要快得多。非常重要 - 我看到大约两秒钟的改进。
如果你想进一步调整速度,可以使用grunt-sass代替使用libsass的grunt-contrib-sass来提高速度。
这与自动修复器结合,例如。 nDmitry(无法链接,没有代表)这应该填补省略指南针留下的功能差距。
希望有所帮助。
答案 3 :(得分:0)
我知道这个问题已经有几年了,但我想我会增加另一个潜在的原因/解决方案。
首先,尝试使用--verbose
启动您的grunt服务器,并观察您的sass任务占用大部分时间的位置。有些插件会报告每个部分的时间,但对我来说,只需观察--verbose
输出就可以非常清楚延迟的位置。对我来说,这不是真正的sass任务,而是加载不必要的依赖。
正如Grunt的GitHub回购中的this问题所述,某些任务可能需要很长时间才能完成的一个原因是Grunt每次运行时都会加载所有任务。因此,即使grunt-contrib-watch只运行指南针:当您更改sass文件时,dist任务仍然会加载所有任务及其依赖项。
现在有一个名为jit-grunt(或在npm上)的插件可以解决此问题并仅加载运行任务所需的内容。这有助于我的指南针任务完成得更快。