我有一个与yeoman建立的角度项目,与rails api后端交谈.
一切都很好,除了咕噜咕噜的任务很慢.
当我运行grunt服务器时–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','connect:test' //'karma' ]); grunt.registerTask('build',[ 'preprocess:multifile','clean:dist','useminPrepare','concurrent:dist','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命令,它会更快(加载任务需要1.6s而不是14.3).
所以共享文件系统可能是个问题.但为什么…
解决方法
我对Vagrant和Yeomans角度发生器有完全相同的问题.运行grunt服务后,编译sass,重启服务器等花了将近30秒.
我已经使用过NFS,但它仍然很慢.然后我尝试了jit-grunt,即时grunt加载器.我用jit-grunt替换了load-grunt-tasks,现在一切都快了很多.
这是一篇关于JIT-Grunt的好文章:
https://medium.com/written-in-code/ced193c2900b