Gulp glob忽略文件类型而不复制空文件夹

时间:2016-02-26 14:30:13

标签: javascript node.js gulp glob

我创建了一个gulp的glob,它忽略了一组目录中的javascript和coffeescript文件。我希望将所有其他文件复制到一个工作正常的目录中。唯一的问题是,当只有javascript或coffeescript文件时,它会复制一个空文件夹。任何想法如何修改这个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/

2 个答案:

答案 0 :(得分:7)

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

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

这将保留src中的dir结构,但省略空的结构。

答案 1 :(得分:0)

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

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