2016-02-26 60 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中的目錄結構,但省略空的。