D
D
dicem2019-08-13 21:56:42
gulp.js
dicem, 2019-08-13 21:56:42

Why is gulp watch not responding to new files?

The code:

const gulp			= require('gulp'),
    concat		= require('gulp-concat'),
    cleanCSS		= require('gulp-clean-css'),
    less			= require('gulp-less'),
    autoprefixer 	= require('gulp-autoprefixer'),
    rewriteCSS	= require('gulp-rewrite-css'),
    path			= require('path')

gulp.task('default', function() {
  gulp.src('./less/**/*.less')
    .pipe( concat('General.less'))
    .pipe( less({
      paths: [ path.join(__dirname, 'less', 'includes') ]
    }))
    .pipe( autoprefixer({
      overrideBrowserslist: ['>1% in RU', 'ie 11'],
      grid: true,
      cascade: false
    }))
    .pipe( cleanCSS({ level: 2 }))
    .pipe( gulp.dest('./assets/styles/'))
})

gulp.task('rewrite', function() {
  gulp.src('./assets/styles/General.css')
    .pipe( rewriteCSS({destination:'./assets/styles/'}))
})

gulp.watch('less/**/*.less', gulp.series(['default', 'rewrite']))

I read that new versions of gulp can react to new files, but the glob in gulp.watch should not contain './'
As a result, new files are not accepted at all. What to do?! PAMAGITI!

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
dicem, 2019-08-15
@dicem

Actually, everything turned out to be much simpler. The task was actually executed only once and froze in anticipation of the callback.
Valid code:

const gulp			= require('gulp'),
    concat		= require('gulp-concat'),
    cleanCSS		= require('gulp-clean-css'),
    less			= require('gulp-less'),
    autoprefixer 	= require('gulp-autoprefixer'),
    rewriteCSS	= require('gulp-rewrite-css'),
    path			= require('path')

gulp.task('default', function(done) {
  gulp.src('./less/**/*.less')
    .pipe( concat('General.less'))
    .pipe( less({
      paths: [ path.join(__dirname, 'less', 'includes') ]
    }))
    .pipe( autoprefixer({
      overrideBrowserslist: ['>1% in RU', 'ie 11'],
      grid: true,
      cascade: false
    }))
    .pipe( cleanCSS({ level: 2 }))
    .pipe( gulp.dest('./assets/styles/'))

  done()
})

gulp.task('rewrite', function(done) {
  gulp.src('./assets/styles/General.css')
    .pipe( rewriteCSS({destination:'./assets/styles/'}))

  done()
})

gulp.watch('less/**/*.less', gulp.series(['default', 'rewrite']))

Fixed with the addition
function(done) {
...
...
done()
}

in the task function

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question