Gulp 4 glob для исключения определенных файлов и папок, не работающих
Я недавно установил gulp 4 [из 3.9.1], и у меня возникла проблема с тем, чтобы мои глобусы работали, как раньше.
У меня есть целый каталог (за исключением некоторых других подкаталогов и файлов), который я хочу перенести.
Вот соответствующий код:
var path_in_str = 'my_input_dir/';
var path_out_str = 'my_output_dir/';
return gulp.src([path_in_str+'**', path_in_str+'.*', '!'+path_in_str+'node_modules', '!'+path_in_str+'node_modules/**', '!'+path_in_str+'*.json'], {dot: true})
.pipe(gulp.dest(path_out_str));
В основном я пытаюсь предотвратить node_modules
папка от передачи, и я также хочу, чтобы все .json
файлы в домашней папке также не передаются.
Что происходит, так это то, что node_modules
только каталог [нет содержимого] передается. Кроме того, все .json
файлы передаются.
Как я могу настроить это, чтобы исправить способ обработки глобусов в Gulp 4 [как он, кажется, немного изменился]?
1 ответ
Я не мог заставить это работать с нативным gulp, поэтому я решил попробовать пакет glob для узла, и эта опция лучше всего подходит для варианта использования.
Сначала вам нужно будет установить его так:
npm install glob --save-dev
Затем укажите это в своем глотке:
var gp_glob = require('glob');
И наконец, используйте его как глобальный фильтр:
var input_list_arr = gp_glob.sync(path_in_str+'**', {ignore: [path_in_str+'node_modules/**', path_in_str+'*.json'], dot: true});
return gulp.src(input_list_arr, {base: path_in_str})
.pipe(gulp.dest(path_out_str));
Обратите внимание, что мы используем ignore
вариант вместо !
нотация для фильтрации путей к файлам / каталогам. Также обратите внимание, что base
опция указывается при передаче отфильтрованного списка в gulp.src
,
Это сработало для меня, как задумано. Надеюсь, поможет.