在我的 gulp 构建中,我已经完成了在所有编译之后运行的任务,发生了uglifying和minification。此任务只是将 src 中的所有内容复制到之前任务未触及/处理的 dest 目录中。我遇到的一个小问题是,这导致 dest 目录中的空目录。
有没有办法告诉gulp.src
glob只包含模式匹配中的文件(比如提供'is_file'
标志)?
感谢。
答案 0 :(得分:8)
通过向管道添加过滤器来修复它:
var es = require('event-stream');
var onlyDirs = function(es) {
return es.map(function(file, cb) {
if (file.stat.isFile()) {
return cb(null, file);
} else {
return cb();
}
});
};
// ...
var s = gulp.src(globs)
.pipe(onlyDirs(es))
.pipe(gulp.dest(folders.dest + '/' + module.folder));
// ...
答案 1 :(得分:5)
我知道我在这个问题上已经迟到了,但对于其他任何绊倒这个问题的人来说,还有另外一种方法可以做到这一点,在我看来这看起来非常优雅。我在this question
中找到了它要排除我在glob模式之后添加{ nodir: true }
的空文件夹。
您的一般模式可能是这样(使用Nick's answer中的变量):
gulp.src(globs, { nodir: true })
.pipe(gulp.dest(folders.dest + '/' + module.folder));
我的情况如下:
gulp.src(['src/**/*', '!src/scss/**/*.scss', '!src/js/**/*.js'], { nodir: true })
.pipe(gulp.dest('dev/'));
这将选择 src 目录中不 scss或js文件的所有文件,并且不会复制这两个目录中的任何空文件夹。