Gulp 4 glob для исключения определенных файлов и папок, не работающих - PullRequest
0 голосов
/ 11 декабря 2018

Я недавно установил 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 Ответ

0 голосов
/ 11 декабря 2018

Я не мог заставить это работать с нативным gulp, поэтому я решил попробовать пакет узла glob , и эта опция лучше всего подходит для варианта использования.

Сначала вам нужно будет установить его следующим образом:

npm install glob --save-dev

Затем сослаться на него в gulp gile:

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.

Это сработало для меня, как задумано.Надеюсь, это поможет.

...