Gulp复制空目录

时间:2014-05-18 07:49:50

标签: node.js glob gulp gulp-glob

在我的 gulp 构建中,我已经完成了在所有编译之后运行的任务,发生了uglifying和minification。此任务只是将 src 中的所有内容复制到之前任务未触及/处理的 dest 目录中。我遇到的一个小问题是,这导致 dest 目录中的空目录。

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

感谢。

2 个答案:

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