Как быстро у вас работает grunt и что вы для этого сделали?

Недавно открыл для себя grunt и радости не было предела, пока не были прописаны все зависимости и не настроено всё под себя. Со всевозможными задачами в режиме watch время выполнения любой ~17 сек. Если оставить в Gruntfile только watch и компиляцию less в css ~3 сек.

Если возможно как-нибудь ускорить grunt, буду счастлив узнать об этом в виде вашего ответа, гневной ссылкой на документацию/форум/что угодно. Самому найти не получается(

Ноут конечно слабый у меня, но неужели grunt`у много надо?
Собственно ноут: win7, atom 1.5, 2gb ОЗУ

Gruntfile
module.exports = function(grunt) {

	grunt.initConfig({
		uglify: {
			options: {
				report: 'gzip',
				compress: {
					dead_code: true,
					sequences: true,
					evaluate: true,
					booleans: true,
					loops: true,
					if_return: true,
					join_vars: true
				}
			},
			task: {
				src: ['js/concat/concat.js'],
				dest: 'js/min/min.js'
			}
		},
		imagemin: {
			options: {
				optimizationLevel: 1,
				pngquant: true,
				progressive: false,
				interlaced: false
			},
			dynamic: {
				files: [{
					expand: true,
					cwd: 'imgs/simple/',
					src: ['*.{png,jpg,gif}'],
					dest: 'imgs/min/'
				}]
			}
		},
		sprite: {
			all: {
				src: ['imgs/forSprite/*.png'],
				destImg: 'imgs/sprite/sprite.png',
				destCSS: 'css/simple/sprite_positions.css',
				imgPath: '../../imgs/sprite/sprite.png',
				algorithm: 'binary-tree',
				padding: 2,
				engine: 'pngsmith',
				cssFormat: 'css',
				imgOpts: {
					'format': 'png'
				}
			}
		},
		less: {
			options: {
				report: 'gzip',
				sourseMap: true
			},
			dynamic: {
				files: [{
					expand: true,
					cwd: 'css/less/',
					src: ['*.less'],
					dest: 'css/simple/',
					ext: '.css',
				}]
			}
		},	
		sass: {
			options: {
				style: 'expanded'
			},
			dynamic: {
				files: [{
					expand: true,
					cwd: 'css/sass/',
					src: ['*.scss'],
					dest: 'css/simple/',
					ext: '.css',
				}]
			}
		},
		autoprefixer: {
			options: {
				browsers: ['> 1%', 'last 2 versions', 'ff 24', 'opera 12.1', 'ie 8', 'ie 7']
			},
			task: {
				src: ['css/concat/concat.css'],
				dest: 'css/concat/concat.css'
			}
		},
		cssmin: {
			option: {
				keepSpecialComments: 0,
				report: 'gzip',
			},
			task: {
				src: ['css/concat/concat.css'],
				dest: 'css/min/min.css'
			}
		},
		htmlmin: {
			options: {
				collapseBooleanAttributes: true,
				removeRedundantAttributes: true,
				collapseWhitespace: true,
				removeComments: true
			},
			dynamic: {
				files: [{
					expand: true,
					cwd: 'html/simple/',
					src: ['*.html'],
					dest: 'html/min/'
				}]
			}
		},
		replace: {
			options: {
				patterns: [
					{
					match: /\S*\.js.w*/,
					replacement: 'src="../../js/min/min.js"',
					expression: true
					},
					{
					match: /\S*\.css.w*/,
					replacement: 'href="../../css/min/min.css"',
					expression: true
					}
				]
			},
			dynamic: {
				files: [{
					expand: true,
					flatten: true,
					src: ['html/simple/*.html'],
					dest: 'html/simple/',
				}]
			}
		},
		concat: {
			options: {
				separator: ';',
			},
			js: {
				src: ['js/libs/*.js', 'js/simple/*.js'],
				dest: 'js/concat/concat.js'
			},
			css: {
				src: ['css/libs/*.css', 'css/simple/*.css', '!css/simple/sprite_positions.css'],
				dest: 'css/concat/concat.css'
			}
		},
		watch: {
			img: {
				files: ['imgs/simple/*.{png,jpg,gif}'],
				tasks: ['imagemin:dynamic'],
				options: {
					event: ['added', 'changed']
				}
			},
			less: {
				files: ['css/less/*.less'],
				tasks: ['less:dynamic']
			},
			sass: {
				files: ['css/sass/*.scss'],
				tasks: ['sass:dynamic']
			},
			sprite: {
				files: ['imgs/forSprite/*.{png,jpg,gif}'],
				tasks: ['sprite:all'],
				options: {
					event: ['added']
				}
			},
			concatjs: {
				files: ['js/libs/*.js', 'js/simple/*.js'],
				tasks: ['concat:js']
			},
			concatcss: {
				files: ['css/libs/*.css', 'css/simple/*.css', '!css/simple/sprite_positions.css'],
				tasks: ['concat:css']
			},
			autoprefixer: {
				files: ['css/concat/concat.css'],
				tasks: ['autoprefixer:task'],
				options: {
					event: ['added', 'changed']
				}
			}
		}
	});
	grunt.loadNpmTasks('grunt-contrib-less');
	grunt.loadNpmTasks('grunt-contrib-htmlmin');
	grunt.loadNpmTasks('grunt-contrib-uglify');
	grunt.loadNpmTasks('grunt-contrib-imagemin');
	grunt.loadNpmTasks('grunt-spritesmith');
	grunt.loadNpmTasks('grunt-contrib-sass');
	grunt.loadNpmTasks('grunt-autoprefixer');
	grunt.loadNpmTasks('grunt-contrib-cssmin');
	grunt.loadNpmTasks('grunt-replace');
	grunt.loadNpmTasks('grunt-contrib-watch');
	grunt.loadNpmTasks('grunt-contrib-concat');
	
	
	grunt.registerTask(
		'default', ['replace:dynamic', 'uglify:task', 'cssmin:task', 'htmlmin:dynamic']
	);

};
  • Вопрос задан
  • 3474 просмотра
Решения вопроса 1
Slasher
@Slasher
Grunt для таких вещей нужно очень мощное железо. У меня характеристики раза в 3 выше и всё равно медленно компилирует, придется скоро апгрейд только для этого делать. Попробуйте распараллелить задачи вот этим https://github.com/sindresorhus/grunt-concurrent
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Zoxon
@Zoxon
Веб-разработчик
GRUNT очень медленный, и железо ненужно апгрейдить. А нужно переходить на GULP
Если grunt собирает проект допустим за 4 секунды, gulp делает то же самое за 300 мс
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы