2016-02-26 122 views
3

我已经创建了一个gulp的glob,忽略了一组目录中的javascript和coffeescript文件。我想它将所有其他文件复制到一个工作正常的目录。唯一的问题是,当只有javascript或coffeescript文件时,它会复制一个空文件夹。任何想法如何可以修改此glob以不复制空文件夹?Gulp glob忽略文件类型并且不复制空文件夹

gulp.task('copyfiles', function(){ 
    gulp.src('apps/*/static_src/**/!(*.js|*.coffee)') 
     .pipe(gulp.dest('dest')); 
}); 

实施例的源文件:

apps/appname/static_src/images/image.jpg 
apps/appname/static_src/js/script.js 

预期输出:

dest/static_src/images/image.jpg 

电流输出:

dest/static_src/images/image.jpg 
dest/static_src/js/ 
+0

可能重复的[Gulp复制空目录](http://stackoverflow.com/questions/23719731/gulp-copying-empty-directories) –

回答

0
gulp.task('copyfiles', function(){ 
    gulp.src(['apps/*/static_src/**/*','!apps/*/static_src/{js/, js/**}']) 
     .pipe(gulp.dest('dest')); 
}); 

我认为你需要一个与目录匹配的模式'!apps/*/static_src/{js/, js/**}'以及里面的文件来防止忽略空目录。我不确定是否有模式只通过指定其内容来匹配目录。

6

由于gulp.src接受almost the same options as node-glob,您可以添加nodir: true作为一个选项:

gulp.src('apps/*/static_src/**/!(*.js|*.coffee)', { nodir: true }) 

这将保留从src中的目录结构,但省略空的。