我有一个与 yeoman 一起构建的 angular 项目,与 rails api 后端交谈。
一切正常,除了 grunt 任务非常慢。
当我跑 grunt server --verbose
:
Execution Time (2014-01-15 13:37:55 UTC)
loading tasks 14.3s ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 26%
server 1ms 0%
preprocess:multifile 11ms 0%
clean:server 13ms 0%
concurrent:server 34.3s ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 63%
autoprefixer 1ms 0%
autoprefixer:dist 369ms ▇ 1%
connect:livereload 17ms 0%
watch 5.8s ▇▇▇▇▇▇▇▇▇ 11%
Total 54.8s
我的一些 Gruntfile:
'use strict';
module.exports = function (grunt) {
require('time-grunt')(grunt);
require('load-grunt-tasks')(grunt);
require('time-grunt')(grunt);
grunt.initConfig({
...
});
grunt.loadNpmTasks('grunt-preprocess');
grunt.registerTask('server', function (target) {
if (target === 'dist') {
return grunt.task.run(['build', 'connect:dist:keepalive']);
}
grunt.task.run([
'preprocess:multifile',
'clean:server',
'concurrent:server',
'autoprefixer',
'connect:livereload',
'watch'
]);
});
grunt.registerTask('test', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test'
//'karma'
]);
grunt.registerTask('build', [
'preprocess:multifile',
'clean:dist',
'useminPrepare',
'concurrent:dist',
'autoprefixer',
'concat',
'copy:dist',
'cdnify',
'ngmin',
'cssmin',
'uglify',
'rev',
'usemin'
]);
grunt.registerTask('default', [
'jshint',
'test',
'build'
]);
};
项目规模:
vagrant@vm ~code/myapp/app/scripts
$> find -name "*.js" | xargs cat | wc -l
10209
我在 MacOS 10.8 上运行,i7 处理器,16GB 内存,SSD...需要这么长时间是正常的吗?是什么让 grunt 任务(尤其是“加载任务”)如此缓慢?
注:我在一个流浪机器中使用 ssh 并从那里运行 grunt 命令。如果我在 native 系统上运行 grunt 命令,它会快得多(
loading tasks
需要 1.6 秒而不是 14.3 秒)。所以共享文件系统可能是一个问题。但为什么...
最佳答案
我对 Vagrant 和 Yeomans angular-generator 有完全相同的问题。运行后grunt serve
编译 sass、重启服务器等花了将近 30 秒。
我已经使用过 NFS,但它仍然很慢。然后我尝试了 jit-grunt ,及时的 grunt 加载器。我用 jit-grunt 替换了 load-grunt-tasks,现在一切都快了很多。
这是一篇关于 JIT-Grunt 的好文章:
https://medium.com/written-in-code/ced193c2900b
关于ruby-on-rails - 自耕农应用程序中的 Grunt 任务很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21139238/