@Laxe

Почему Gulp медленно работает?

Собственно почему gulp медленно собирает почти пустые два файла, не говоря уже о почти готовом проекте?
Или помогите, пожалуйста, оптимизировать таски для него...

var project = 'mary',
		gulp = require('gulp'),
		compass = require('gulp-compass'),
		jade = require('gulp-jade'),
		imagemin = require('gulp-imagemin'),
		plumber = require('gulp-plumber'),
		notify = require('gulp-notify'),
		cmq = require('gulp-combine-media-queries'),
		cssb = require('gulp-cssbeautify'),
		uncss = require('gulp-uncss');

gulp.task('compass', function() {
	gulp.src(['./' + project + '/src/scss/*.scss', '!./' + project + '/src/scss/_*.scss'])
			.pipe(plumber())
			.pipe(compass({
				config_file: './' + project + '/config.rb',
				css: './' + project + '/public/css',
				sass: './' + project + '/src/scss',
				fonts: './' + project + '/public/fonts',
				images: './' + project + '/public/img',
				javascripts: './' + project + '/public/js',
				comments: 'true',
				style: 'expanded'
			}))
			.pipe(notify('Compass is compile!'));
});

gulp.task('jade', function() {
	gulp.src(['./' + project + '/src/jade/*.jade', '!./' + project + '/src/jade/_*.jade'])
			.pipe(plumber())
			.pipe(jade({pretty: true}))
			.pipe(gulp.dest('./' + project + '/public/'))
			.pipe(notify('Jade is compile!'));
});

gulp.task('images', function() {
	gulp.src(['./' + project + '/src/img/**/*.{png,jpg}'])
			.pipe(imagemin({optimizationLevel: 3}))
			.pipe(plumber())
			.pipe(gulp.dest('./' + project + '/public/img/'));
});

gulp.task('cmq', function() {
	gulp.src('./' + project + '/public/css/styles.css')
			.pipe(plumber())
			.pipe(cmq({
				log: true,
				use_external: true
			}))
			.pipe(gulp.dest('./' + project + '/public/css'))
			.pipe(notify('Media is sorting!'));
});

gulp.task('cssb', function() {
	gulp.src('./' + project + '/public/css/styles.responsive.css')
	.pipe(plumber())
	.pipe(cssb())
	.pipe(gulp.dest('./' + project + '/public/css/'));
});

gulp.task('uncss', ['compass'], function() {
	gulp.src('./' + project + '/public/css/bootstrap-template.css')
			.pipe(plumber())
			.pipe(uncss({
				html: ['/' + project + '/public/index.html']
			}))
			.pipe(gulp.dest('./' + project + '/public_html/css/'))
			.pipe(notify('UnCss is complite!'));
});

gulp.task('watch', function() {
	gulp.run('images');
	gulp.run('compass');
	gulp.run('jade');
	
	gulp.watch(project + '/src/scss/**/*.scss', function(event) {
		gulp.run('compass');
	});
	gulp.watch(project + '/src/jade/**/*.jade', function(event) {
		gulp.run('jade');
	});
	gulp.watch(project + '/src/img/**/*', function(event) {
		gulp.run('images');
	});
	gulp.watch('./' + project + '/src/img/**/*', ['images']);
	gulp.watch('./' + project + '/src/jade/**/*.jade', ['jade']);
	gulp.watch('./' + project + '/public/css/styles.css', ['cmq']);
	gulp.watch('./' + project + '/public/css/styles.responsive.css', ['cssb']);
	gulp.run(['uncss']);
});


48a3518697dc4a51905d9b30b7edd212.jpg
  • Вопрос задан
  • 1773 просмотра
Решения вопроса 1
voidnugget
@voidnugget
Программист-прагматик
Ну во первых - нужно возвращать promise с функции что бы корректно отображалось время выполнения и задачи могли быть нормально синхронизированы.
gulp.task('stuff', function() {
  return gulp.src([]).pipe(gulp.dest('whatever'));
});

Во вторых gulp.run() устарел, корректнее запускать задачи через watch:
gulp.task('watch', function() {
  gulp.watch('*.stuff', ['aJob']);
});

А в третих - это не Gulp медленный, а компас каждый раз с нуля рестартует.
Лучше отдельно оформить задачу с compass watch'ем - там в конфиге gulp-compass'a есть отдельно опция task.

А я слез на stylus - там нет таких проблем.
Сейчас подумываю об uncss.

Обязательно нужно почитать про синхронизацию в gulp'e - мало кто понимает как её правильно выполнять.

Для референса можно взять мой старый gulp-seed, правда я его давно не обновлял.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gatilin222
@gatilin222
Frontend-разработчик
У нас на блоге есть статья - Начинаем работать с gulp.js. Там в принципе все подробно описано)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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