Gulp复制空目录



在我的gulp构建中,我创建了一个任务,在所有编译、丑化和最小化发生后运行。该任务只是将src中的所有内容复制到dest目录中,这些内容没有被以前的任务触及或处理过。我遇到的小问题是,这会导致dest目录中的空目录。

是否有一种方法可以告诉gulp.src glob只包括模式匹配中的文件(如提供'is_file'标志)?

谢谢。

通过在管道中添加过滤器来修复它:

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));
// ...

我知道我在这个问题上迟到了,但是对于其他遇到这个问题的人来说,还有另一种在我看来相当优雅的方法。我在这个问题中发现了它

为了排除空文件夹,我在glob模式后添加了{ nodir: true }

你的一般模式可以是这样的(使用Nick回答中的变量):

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文件的所有文件,并且也不会从这两个目录中复制任何空文件夹。

最新更新