【问题标题】:Gulp copying empty directoriesGulp 复制空目录
【发布时间】:2014-07-06 08:23:56
【问题描述】:

在我的 gulp 构建中,我创建了一个在所有编译、丑化和缩小发生后运行的任务。此任务只是将 src 中的所有内容复制到 dest 目录中,这些内容尚未被早期任务触及/处理。我遇到的小问题是这会导致 dest 目录中的目录为空。

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

谢谢。

【问题讨论】:

    标签: node.js glob gulp gulp-glob


    【解决方案1】:

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

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

    【讨论】:

    • folders.dest + '/' + module.folder 是从哪里来的?他们的变量在哪里?
    【解决方案2】:

    我知道我参加这个聚会迟到了,但对于其他偶然发现这个问题的人来说,还有另一种在我看来非常优雅的方法。我在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 文件的文件,并且也不会从这两个目录中复制任何空文件夹。

    【讨论】:

    • 节省了一天 14082017
    • 救了一夜 131018
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多