gulp-watch, gulp-watch-less, не стреляйте

У меня возникли проблемы с получением gulp-watch или gulp-watch-less для активации после выполнения задокументированных примеров. Первоначально у меня была проблема с lazypipe (здесь не показано), но мне кажется, что я делаю что-то неправильно при использовании плагинов. Вот мой упрощенный код, который все еще не работает.

Обратите внимание, что я попробовал это с простым gulp-watch, и он демонстрирует ту же проблему: он не запускает последующие каналы при изменении. Я включу информацию об этом здесь на случай, если это проблема.

Вот мой глоток.

var debug = require ( 'gulp-debug' );
var gulp = require ( 'gulp' );
var less = require ( 'gulp-less' );
var watchLess = require ( 'gulp-watch-less' ); 

gulp.task ( 'dev-watch', function () {
  // main.less just imports child less files
  gulp.src ( './app/styles/less/main.less' )
    .pipe ( watchLess ( './app/styles/less/main.less' ) )
    .pipe ( debug () );
    .pipe ( less () )
    .pipe ( gulp.dest ( './app/styles' ) )
  ;
});

Когда я запускаю задачу, она отлично выполняет и генерирует ожидаемые файлы. Я вижу, что отладка также отлично выводит информацию о потоке.

Когда я меняю файл, я вижу, что watchLess подхватывает изменение:

 [10:49:54] LESS saw child.less was changed
 [10:49:54] LESS saw child.less was changed
 [10:49:54] LESS saw main.less was changed:by:import
 [10:49:54] LESS saw main.less was changed:by:import

Однако задача less не выполняется. Похоже, он ничего не испускает, потому что отладка не срабатывает.

Вот соответствующая информация package.json:

"devDependencies": {
  "gulp": "^3.8.7",
  "gulp-less": "^1.3.6",
  "gulp-watch": "^1.2.0",
  "gulp-watch-less": "^0.2.1"
}

person sak_to    schedule 19.11.2014    source источник
comment
Дополнительные сведения см. в проблеме № 108 gulp-watch. .   -  person sak_to    schedule 20.11.2014


Ответы (2)


Ваш код просто запускает наблюдателя в канале, но не говорит, что делать дальше.

Рабочий пример должен быть следующим:

var
  gulp = require('gulp'),
  debug = require ('gulp-debug'),
  less = require ( 'gulp-less'),
  watchLess = require('gulp-watch-less');

gulp.task('dev-watch', function () {
  watchLess('./app/styles/less/main.less')
    .pipe (debug ())
    .pipe(less())
    .pipe(gulp.dest('./app/styles'))
});

Однако вы также можете сделать то же самое, просто используя gulp-watch или gulp (gulp.watch).

person zhekaus    schedule 22.07.2015

это должно быть лучшее решение, и я получаю информацию в github без глотка; https://github.com/plus3network/gulp-less https://github.com/gulpjs/gulp/blob/master/docs/recipes/combining-streams-to-handle-errors.md npm i stream-combiner2 --save-dev

var combiner = require('stream-combiner2');

var combined = combiner.obj([
    gulp.src(srcs),
    less(),
    autoprefixer({
        browsers: ['last 6 versions'],
        cascade: false
    }),
    isDev ? null : cleanCss(),
    gulp.dest(targetDir + 'css/multi/'),
].filter(v => v));

// any errors in the above streams will get caught
// by this listener, instead of being thrown:
combined.on('error', console.error.bind(console));
combined.on('end', () => {}); //done have been call when return combined;
return combined;
person lmx_xml    schedule 06.02.2017