Задать вопрос

Как решить конфликт плагинов?

Все началось с того, что дефолтный watch не видит созданные при запущенном gulp файлы.
Мне посоветовали использовать gulp-watch, но с его появлением появилась и другая проблема.
Если при дефолтном watch указать порядок выполнения задач, то все работает как и ожидалось.
Но в gulp-watch последовательность не выполняется... и это даже не последовательность, а...
Вот представьте что один плагин наблюдает за изменением js и проводит с ним какое-то действие.
И так есть второй плагин, который тоже наблюдает за js и так же выполняет с ним какие-то действия.
И вот так получается что используя gulp-watch после того, как выполняется второй плагин,
начинает выполняться снова первый. И так стек падает.
Плагины эти gulp-jsbeautifier и gulp-concat.

В общем я нашел выход, но по сравнению с легкостью полученной при использовании дефолтного watch все очень сложно.

Существует ли выход?

И ещё интересует у Всех ли дефолтный вотчер не видит создаваемые файлы и знает ли кто-нибудь, как это исправить?
И gulp-watch запускается вызовом start, которую хотят выпилить из gulp,
что в свою очередь означает, что нужно от неё отказываться. А как тогда быть?

**UPD:**
Как выяснилось содержимое создаваемого файла gulp видите, но только если нажать сохранить на файле который был в момент запуска. И получается что толи gulp, толи sublime text 3 надо мной издевается.

Если у кого-то было подобное, то буду раз любому совету.

'use strict';

var gulp   = require('gulp');
var watch = require('gulp-watch');

var concat = require('gulp-concat');

gulp.task('concat-js', function(){
	return gulp.src('./src/**/*.js')
		   .pipe(concat('www' + '.js'))
		   .pipe(gulp.dest('./src-concat/'));
});

gulp.task('default', ['watch']);

gulp.task('watch', function(){
	gulp.watch('./src/**/*.js', ['concat-js']);
});


А вот сборка роняющая стек -
var gulp   = require('gulp');
var watch = require('gulp-watch');

var concat = require('gulp-concat');

gulp.task('concat-js', function(){
	return gulp.src('./src/**/*.js')
		   .pipe(concat('www' + '.js'))
		   .pipe(gulp.dest('./src-concat/'));
});

var jsbeautifier = require('gulp-jsbeautifier')

gulp.task('jsbeautifier', function(){
	return gulp.src('./src/**/*.js')
			   .pipe(jsbeautifier())
			   .pipe(gulp.dest('./src/'));
});

gulp.task('default', ['watch']);

gulp.task('watch', function(){
	watch('./src/**/*.js', function(){
		gulp.start(['jsbeautifier', 'concat-js']);
	})
});
  • Вопрос задан
  • 425 просмотров
Подписаться 3 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 3
RainMEN
@RainMEN
HTML/STYLUS/JADE/JS/Laravel/Joomla/DLE и т.д.
Привет! Дефолтный watch как бы вроде бы следит за изменениях в файлах, а не их наличие. Я просто тупо насоздават задачи которые копируют нужные мне файлы которые я не редактирую, например плагины jquery и тому подобное.
Ответ написан
Комментировать
pomeo
@pomeo
Вы gulp-watch пытаетесь использовать как gulp.watch, ваш первый пример должен выглядеть так
'use strict';
var gulp   = require('gulp');
var watch  = require('gulp-watch');
var concat = require('gulp-concat');

gulp.task('concat-js', function(){
  return gulp.src('./src/**/*.js')
       .pipe(watch('./src/**/*.js'))
       .pipe(concat('www.js'))
       .pipe(gulp.dest('./src-concat/'));
});

gulp.task('default', ['concat-js']);
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
у Всех ли дефолтный вотчер не видит создаваемые файлы
это старинный баг где-то чуть ли не в недрах самого nodejs, я думал, его уже давно починили.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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