Gulp glob, чтобы игнорировать типы файлов, а не копировать пустые папки

Я создал глобус для gulp, который игнорирует файлы javascript и coffeescript в наборе каталогов. Я хотел бы скопировать все остальные файлы в каталог, который работает нормально. Единственная проблема заключается в том, что когда есть только файлы javascript или coffeescript, он копирует пустую папку. Любые идеи, как этот шар может быть изменен, чтобы не копировать пустые папки?

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 ответа

Поскольку gulp.src принимает почти те же параметры, что и node-glob, вы можете добавить nodir: trueкак вариант:

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

Это сохранит структуру dir из src, но пропустит пустые.

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

Я думаю, что вам нужен шаблон '!apps/*/static_src/{js/, js/**}' это соответствует каталогу так же как файлам внутри, чтобы предотвратить пропуск пустого каталога. Я не уверен, что существует шаблон, соответствующий каталогу, только указав его содержимое.

Другие вопросы по тегам