gulp.src使用同步同步

cor*_*ore 4 glob node.js npm gulp

我查看了的来源gulp.src(),显然这只是对的引用require('vinyl-fs').src()。查看vfs的文档时src(),它说它采用了它定义的任何选项,以及“任何与glob相关的选项都记录在glob-stream和node-glob中。” 根据node-glob文档,我可以传递options { sync: true }

gulp.src(..., { sync: true })但是,当我尝试使用时,我从gulp收到此错误:

TypeError: Object #<GlobSync> has no method 'on'
Run Code Online (Sandbox Code Playgroud)

任何想法如何指定sync选项gulp.src()

cor*_*ore 5

使用仍然遇到问题gulp.src(filePatterns).pipe(order(filePatterns))。现在,每次运行时gulp,连接的输出顺序都保持不变,但是连接的顺序不是filePatterns数组文字指定的顺序。也许我想念一些东西。

无论如何,我最终在下面实现了此解决方法。而不是执行,例如,gulp.src(filePatterns)我现在gulp.src(deglob(filePatterns))每次执行并获得相同的顺序,并以filePatterns定义数组常量的顺序。

function deglob() {
    var syncGlob = require('glob').sync,
        patterns = _.flatten(arguments, true);

    return _.flatten(patterns.map(function(pattern) {
        return syncGlob(pattern).map(function(file) {
            return pattern.charAt(0) === '!' ? ('!' + file) : file;
        });
    }), true);
}
Run Code Online (Sandbox Code Playgroud)

我实际上已经停止gulp.src()完全使用它,而是在各处使用它:

gulp.from = function () {
    return gulp.src(deglob(arguments));
};
Run Code Online (Sandbox Code Playgroud)