Почему в gulp задача запущенная через watch некорректно выполняется?

gulp.task('header', function () {

	gulp.src('../sources/js/progress.js')
	.pipe(minifyJs())
	.pipe(insert.wrap('{literal}', '{/literal}'))
	.pipe(rename('progress_min.js'))
	.pipe(gulp.dest('../_js'));
});

gulp.task('header_watch', function () {
	gulp.watch('../sources/js/progress.js', ['header']);
});

Есть две задачи header и header_watch. Header выполняется один раз по запуску gulp header, header_watch (gulp header_watch) ждёт изменения в файле и если таковы есть, то запускает первую задачу. Проблема такая, если просто запустить header, то всё работает отлично, создаётся нужный ,js файл. Если запустить header_watch, то создаётся пустой .js файл, хотя header_watch запускает задачу header, которая в свою очередь работает отлично. Что делаю не так?

UPDATE:

Теперь проблема такая, когда запускаю задачу 'topic_thesaurus_new_less', всё отлично работает.
Когда запускаю topic_thesaurus_new_watch, то всё работает и все less файлы компилируются кроме того файла в котором в данный момент были сделаны изменения, т.е. например я изменил файл dropdown.less и все файлы нормально обработаются, кроме него.
gulp.task('topic_thesaurus_new_less', function () {
	var fileName = 'topic_thesaurus_new';

	var lessSources = [
		'../sources/less/vendor/*.less',
		'../sources/less/main.less',
		'../sources/less/fonts.less',
		'../sources/less/blocks/collapse.less',
		'../sources/less/blocks/tooltip.less',
		'../sources/less/blocks/range.less',
		'../sources/less/blocks/dropdown.less',
		'../sources/less/blocks/progress.less',
		'../sources/less/blocks/vote.less',
		'../sources/less/blocks/settings.less',
		'../sources/less/blocks/scroll_pagination.less',
		'../sources/less/blocks/suggest.less',
		'../sources/less/blocks/mixins.less',
	];

	return gulp.src(lessSources)
	.pipe(concat(fileName + '.less'))
	.pipe(less())
	.pipe(base64())
	.pipe(minifyCss())
	.pipe(gzip())
	.pipe(gulp.dest('../_css'));
});

gulp.task('topic_thesaurus_new_watch', function () {
	var lessSources = [
		'../sources/less/vendor/*.less',
		'../sources/less/*.less',
		'../sources/less/blocks/*.less'
	];

	gulp.watch(lessSources, ['topic_thesaurus_new_less']);
});
  • Вопрос задан
  • 272 просмотра
Решения вопроса 1
Исправьте в таске "header"
return gulp.src('../sources/js/progress.js')
и все ../ в путях смените на ./
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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