使用src glob时,排除嵌套目录被复制

时间:2015-05-09 16:46:24

标签: gulp glob minimatch

在gulp src方法中使用glob时,我不能排除目录结构被复制。我的任务:

gulp.task( 'compile', function () {
    return gulp.src( 'src/modules/*/wrappers/**' )
        .pipe( gulp.dest( 'build/' ) );
} );

我希望只复制文件,而不是整个目录结构。

我的目录结构:

+ src/
  + modules/
      + module_1/
          + wrappers/
              file_1
              file_2
      + module_2/
          + wrappers/
              file_3
              file_4
+ build/

运行gulp任务后的目录结构:

+ src/
  + modules/
      + module_1/
          + wrappers/
              file_1
              file_2
      + module_2/
          + wrappers/
              file_3
              file_4
+ build/
  + modules/
      + module_1/
          + wrappers/
              file_1
              file_2
      + module_2/
          + wrappers/
              file_3
              file_4

运行gulp任务后的预期目录结构:

+ src/
  + modules/
      + module_1/
          + wrappers/
              file_1
              file_2
      + module_2/
          + wrappers/
              file_3
              file_4
+ build/
      file_1
      file_2
      file_3
      file_4

值得注意的是使用例如glob' src / modules / module_1 / wrappers / **'给出了理想的结果。

二手模块:

  • gulp 3.8.10

我做错了什么或是js glob实现中的错误?

1 个答案:

答案 0 :(得分:0)

你没有做错任何事; gulp用它的相对路径存储文件,这就是你得到整个目录结构的原因。

您可以使用gulp-flatten

var flatten = require('gulp-flatten');
gulp.task( 'compile', function () {
    return gulp.src( 'src/modules/*/wrappers/**' )
        .pipe(flatten())
        .pipe( gulp.dest( 'build/' ) );
} );