Gulp复制空目录

9
在我的gulp构建中,我创建了一个任务,它会在所有的编译、混淆和压缩完成后运行。这个任务只是将src目录中未被之前任务处理/触及的所有内容复制到dest目录中。问题在于,这导致dest目录中出现空目录。
有没有一种方法可以告诉gulp.src 仅包括模式匹配的文件(例如提供 'is_file'标志)?
谢谢。
2个回答

9

通过向管道添加过滤器进行修复:

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

// ...

文件夹.dest + '/' + 模块.文件夹 是从哪里来的?它们的变量在哪里? - Nick

8
我知道我对这个问题晚了,但是对于其他人可能会遇到的问题,有另一种方法可以做到这一点,我认为这种方法相当优雅。我在这个问题中找到了它。
为了排除空文件夹,我在通配符后面添加了{ 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文件的文件,并且也不会复制这两个目录中的任何空文件夹。


1
救了这一天 14082017 - paranoidhominid
救了这个夜晚 131018 - Diosney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接