4

"Error: Invalid glob argument: undefined"当我尝试gulp.srcgulp.watch. 这两个:

gulp.task('watch', function() {
    gulp.watch('./web/**/*.html')
        .on('change', function(file) {
            gulp.src(file.path)
                .pipe(gulp.dest('./output'));
        });
});

和这个语法变体:

gulp.task('watch', function() {
    gulp.watch('./web/**/*.html', function(file) {
        gulp.src(file.path)
            .pipe(gulp.dest('./output'));
    });
});

产生相同的结果。

gulp.src在还输出“未定义”之前记录 file.path 。

重现:

npm install -g gulp@github:gulpjs/gulp#4.0

并创建一个gulpfile.js包含:

const gulp = require('gulp');

后跟任一示例。

我的理解是,这是可以根据 docs访问更改文件路径的方式,所以我不确定我哪里出错了?

4

1 回答 1

5

该文档是各种错误的。例如,它谈论gaze事件,但gaze在 gulp 4.0 中不再用于监视文件更改;它已被chokidar.

关于您的问题,文档关于您必须访问文件路径的方式是错误的。.on('change')回调函数没有传递对象,event所以没有.path属性。

相反,文件路径作为字符串传递,因此您的第一个示例应如下所示:

gulp.task('watch', function() {
    gulp.watch('./web/**/*.html')
        .on('change', function(file) {
            gulp.src(file)
                .pipe(gulp.dest('./output'));
        });
});

第二个示例中的回调函数根本没有收到路径。它传递了一个done回调,以便通过gulp.series()or促进任务执行gulp.parallel()

于 2016-09-12T06:03:23.240 回答