Ben*_*ier 7 ruby-on-rails angularjs gruntjs yeoman
我有一个与yeoman建立的角度项目,与rails api后端交谈.
一切都很好,除了那些笨拙的任务非常缓慢.
当我跑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
Run Code Online (Sandbox Code Playgroud)
我的一些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'
]);
};
Run Code Online (Sandbox Code Playgroud)
项目规模:
vagrant@vm ~code/myapp/app/scripts
$> find -name "*.js" | xargs cat | wc -l
10209
Run Code Online (Sandbox Code Playgroud)
我在MacOS 10.8上运行i7处理器,16GB内存,SSD ...这是正常的,需要这么长时间?是什么让笨蛋任务(尤其是"加载任务")变得如此缓慢?
注意:我在一个流浪汉机器内ssh'd并从那里运行grunt命令.如果我在我的本机系统上运行grunt命令,它会更快(loading tasks需要1.6s而不是14.3).
因此共享文件系统可能是个问题.但为什么...
小智 5
我对Vagrant和Yeomans角度发生器有完全相同的问题.运行grunt serve后花了将近30秒来编译sass,重启服务器等.
我已经使用过NFS,但它仍然很慢.然后我尝试了jit-grunt,即时grunt加载器.我用jit-grunt替换了load-grunt-tasks,现在一切都快了很多.
这是一篇关于JIT-Grunt的好文章:https: //medium.com/written-in-code/ced193c2900b
我在 Vagrant virtualbox 中使用 grunt。(Ubuntu 12.04)。我的本机文件位于我的主机 (OSx) 上。因为 grunt 任务是 io 密集型的,并且它们是通过文件共享运行的,所以这使得它们非常慢。
这可以通过将 nfs 添加到 Vagrant ( http://docs.vagrantup.com/v2/synced-folders/nfs.html )来改进。这将使 Vagrant 通过 nfs 共享文件,而不是默认的 Vagrant 文件共享。会快一点,但不会快很多。
作为比较,在我的机器上:
用于运行子任务loading grunt tasks
如果只有一项特定任务需要花费大量时间,则该特定任务可能就是问题所在。要进行故障排除,请使用 time-grunt: https: //npmjs.org/package/time-grunt。
| 归档时间: |
|
| 查看次数: |
4460 次 |
| 最近记录: |