ruby-on-rails - 自耕农应用程序中的 Grunt 任务很慢

标签 ruby-on-rails angularjs gruntjs yeoman

我有一个与 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/

相关文章:

ruby-on-rails - Ruby on Rails 中是否有某种母版页功能?

javascript - 使用指令 Controller 进行 Angular 缩小?

angularjs - 在 AAD 保护的 Azure Web 应用程序中检索访问 token

node.js - 如何通过 Grunt 运行 Node 脚本?

ruby-on-rails - 除了rails事件记录验证中的错误消息之外,还有没有办法返回错误代码?

ruby-on-rails - 带有 rspec 的 rails json.jbuilder api -> ActionView::MissingTemplate

ruby-on-rails - 警告 : Can't verify CSRF token authenticity

javascript - Angular ng-grid 和 JSON

javascript - 如何从index.html获取我的js文件的所有src?

gruntjs - NPM vs. Bower vs. Browserify vs. Gulp vs. Grunt vs. Webpack