Gulp复制空目录

nul*_*ull 8 glob node.js gulp gulp-glob

在我的gulp构建中,我完成了一项任务,在完成所有编译,丑化和缩小之后运行.此任务只是将src中的所有内容复制到以前的任务未触及/处理的dest目录中.我遇到的小问题是这导致dest目录中的空目录.

有没有办法告诉gulp.srcglob只包含模式匹配中的文件(比如提供'is_file'标志)?

谢谢.

nul*_*ull 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));

// ...
Run Code Online (Sandbox Code Playgroud)


小智 6

我知道我在这个问题上已经迟到了,但对于其他任何绊倒这个问题的人来说,还有另外一种方法可以做到这一点,在我看来这看起来非常优雅.我在这个问题中找到了它

要排除我{ nodir: true }在glob模式后添加的空文件夹 .

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

gulp.src(globs, { nodir: true })
    .pipe(gulp.dest(folders.dest + '/' + module.folder));
Run Code Online (Sandbox Code Playgroud)

我的如下:

gulp.src(['src/**/*', '!src/scss/**/*.scss', '!src/js/**/*.js'], { nodir: true })
    .pipe(gulp.dest('dev/'));
Run Code Online (Sandbox Code Playgroud)

这将选择src目录中不是 scss或js文件的所有文件,也不会从这两个目录中复制任何空文件夹.