Задать вопрос
VIKINGVyksa
@VIKINGVyksa
front-end developer

Помощь в написании конфига gulp.?

Пишу конфиг для своего проекта и не могу разобраться.
  • есть gulp default - он компилирует всё, минимизирует вешает watch и использует connect
  • есть gulp build - он должен чистить папку dist и пересобрать проект без watch и connect

Но в одном task это не получаеться, приходиться постоянно писать clear и потом только build.
Я хочу чтобы можно было собрать проект так чтобы в dist были нужные мне папки и файлы(если используя препроцессоры создаються папки только для них, а как поступить с картинками и шрифтами?) и всё это в одном task.
Как же делать?
Вот мой исходник...
var gulp = require('gulp'),
	concatCSS = require('gulp-concat-css'),
	minifyCSS = require('gulp-minify-css'),
	rename = require('gulp-rename'),
	sass = require('gulp-sass'),
	jsmin = require('gulp-jsmin'),
	jade = require('gulp-jade'),
	clean = require('gulp-clean'),
	connect = require('gulp-connect'),
	//folder app
	app = './dist/';

//DEFAULT TASK
gulp.task('default',[
						'watch',
						'css',
						'scripts',
						'jade',
						'connect'
					]
);

//
//connect
//
gulp.task('connect',function(){
	connect.server({
						livereload:true,
						root:app
					});
});



//build
gulp.task('build',[
						'clear',//выдаёт ошибку(если его нету то всё ок)
						'jade',
						'css',
						'scripts',
						'removefonts',
						'removeimage'
					]);
//clear dist
gulp.task('clear',function(){
	return gulp.src(app+'*',{read:false})
		.pipe(clean());
});



//
//remove folders
//

gulp.task('removefonts',function(){
	gulp.src('fonts/*')
		.pipe(gulp.dest(app+'fonts/'));
});
gulp.task('removeimage',function(){
	gulp.src('images/*.*')
		.pipe(gulp.dest(app+'images/'));
});


//
//css
//
gulp.task('css',function(){
	gulp.src('sass/*.scss')
		.pipe(sass())
		.pipe(concatCSS('style.css'))
		.pipe(minifyCSS())
		.pipe(rename('style.min.css'))
		.pipe(gulp.dest(app+'css/'))
		.pipe(connect.reload());
});

//
//scripts minify and rename
//
gulp.task('scripts',function(){
	gulp.src('js/*.js')
		.pipe(jsmin())
		.pipe(rename({suffix: '.min'}))
		.pipe(gulp.dest(app+'js/'));
});

//
//conver jade to html
//
gulp.task('jade',function(){
	gulp.src('jade/*.jade')
		.pipe(jade())
		.pipe(gulp.dest(app))
		.pipe(connect.reload());
});

//
// watch files
//
gulp.task('watch',function(){
	gulp.watch('sass/*.scss',['css']);
	gulp.watch('js/*.js',['scripts']);
	gulp.watch('jade/*.jade',['jade']);
});



// command list
/*

gulp - компилирует jade,sass; минифицирует js; смотрит за изменениями в файлах и создаёт сервер
^ использовать для стандартной работы с файлами

gulp build - чистит dist и пересобирает проект
 ^ использовать если в проекте произошли важные изменения
...

*/

если пригодиться то выдаёт вот эту ошибку, я думаю что clear просто не успевает удалять..
b381ce5fcff2461d9ac46b2db30bbc98.png
  • Вопрос задан
  • 1257 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
standy
@standy
Используйте run-sequence
https://www.npmjs.com/package/run-sequence

В примерах разбирается как раз ваша проблема:
gulp.task('build', function(callback) {
  runSequence('build-clean',
              ['build-scripts', 'build-styles'],
              'build-html',
              callback);
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rOOse
@rOOse
Frontend developer
Или просто делать так:
gulp.task('build', ['clean'], function(){
  gulp.start(['jade', 'css', 'js', 'etc']);
});
Ответ написан
Ваш ответ на вопрос

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

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