Gulp Watch不起作用

10

我是一个新的Gulp用户,想监视compass的简单脚本不起作用。但当我只运行gulp compass时,gulp可以编译它。有什么建议吗?这是我的脚本:

var gulp = require('gulp'),
    compass = require('gulp-compass'),

// Compass
gulp.task('compass', function() {
    gulp.src('./assets/scss/*.scss')
        .pipe(compass({
            config_file: './config.rb',
            css: './assets/css',
            sass: './assets/scss'
        }))
        .pipe(gulp.dest('./assets/css'));
});

// Default task
gulp.task('default', function() {
    gulp.start('compass');
});

// Watch
gulp.task('watch', function() {

    // Watch .scss files
    gulp.watch('./assets/scss/*.scss', ['compass']);

});
3个回答

34

您忘记了实际调用“watch”任务,这不同于gulp.watch。您的默认gulp任务应该像这样:

gulp.task('default', function() {
    gulp.start('compass');
    gulp.start('watch');
});

但实际上它应该看起来像这样:

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

11
你怎么知道的?他可能是通过命令行调用 gulp watch - Rhys van der Waerden

9

我将gulp.watch的源更改为./assets/**/*.scss


1
尽管你自己的答案对你起作用了,但请考虑使用 @cozuya 的答案,因为它是使用 Gulp 的一个很好的示例。 - Alfian Busyro
谢谢@nizamil,这真的帮了我很多。不确定为什么它没有捕捉到 ./.coffee,但当我将其更改为 ./**/.coffee 时,它起作用了。我认为你应该将正确答案移到这个问题上。 - NotoriousWebmaster

5

在Gulp 4.x中

您需要传递一个函数。在Gulp 4.x中惯常的做法是使用gulp.series()调用并只传递一个任务名称。这将返回一个仅执行指定任务的函数。

gulp.task('watch', function() {
  gulp.watch('./assets/scss/*.scss', gulp.series('compass'))
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接