【问题标题】:How can I fix gulp watch not watching files如何修复 gulp watch 不看文件
【发布时间】:2019-09-18 16:05:17
【问题描述】:

我正在使用 gulp 监视文件更改并编译我的 scss,但 watch 没有跟踪文件更改。

我使用 gulp-sass,版本是 4.0

const { src, dest, watch, series } = require('gulp');
const { sass } = require('gulp-sass');

function compileSass() {
 return src('app/assets/scss/main.scss')
 .pipe(sass())
 .pipe(dest('app/css'));
}

function start() {
  //compile and watch
  watch('app/assets/scss/**/*.scss', { events: 'change' }, function(compileSass) {
    // body omitted
    compileSass();
  });

}

exports.default = series(start);

【问题讨论】:

    标签: sass gulp watch gulp-sass


    【解决方案1】:

    不确定为什么您的任务没有包含在 gulp.task 中。

    尝试将此代码粘贴到您的gulpfile.js

    gulpfile.js

    const gulp = require('gulp');
    const sass = require('gulp-sass'); // not { sass }
    
    /** Transpile sass/scss to css */
    gulp.task('compile-sass', () => {
      return gulp.src('app/assets/scss/main.scss')
        .pipe(sass())
        .pipe(gulp.dest('app/css'));
    });
    
    /** Run the compile-sass task then set a watchers to app/assets/scss/**/*.scss */
    gulp.task('watch', gulp.series(
      'compile-sass',
      (done) => {
        gulp.watch('app/assets/scss/**/*.scss')
          .on('change', gulp.series('compile-sass'))
        done()
      },
    ));
    
    /** Default task */
    gulp.task('default', gulp.series('watch'));
    

    现在您可以在终端中使用gulp 运行它。

    【讨论】:

    • gulp4 不需要使用 gulp.task:其实不推荐使用。
    【解决方案2】:

    试试:

    function start() {
      //compile and watch
      watch('app/assets/scss/**/*.scss', { events: 'change' }, function(cb) {
        // body omitted
        compileSass();
        cb();
      })
    }
    

    cb 是一个回调函数 - 只需将其保留为 cb(它不需要存在于其他任何地方)并在任务中最后调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      • 2017-07-31
      相关资源
      最近更新 更多