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

Ada*_*dam 5 javascript glob node.js gulp

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

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

示例源文件:

apps/appname/static_src/images/image.jpg
apps/appname/static_src/js/script.js
Run Code Online (Sandbox Code Playgroud)

预期产量:

dest/static_src/images/image.jpg
Run Code Online (Sandbox Code Playgroud)

当前输出:

dest/static_src/images/image.jpg
dest/static_src/js/
Run Code Online (Sandbox Code Playgroud)

And*_*ren 7

由于gulp.src接受与node-glob几乎相同的选项,您可以添加nodir: true为选项:

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

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


The*_*e F 0

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

'!apps/*/static_src/{js/, js/**}'我认为您需要一个与目录以及内部文件匹配的模式,以防止省略空目录。我不确定是否存在仅通过指定目录内容来匹配目录的模式。