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
我的一些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 ...这是正常的,需要这么长时间?是什么让笨蛋任务(尤其是"加载任务")变得如此缓慢?
注意:我在一个流浪汉机器内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 次 | 
| 最近记录: |