1

我最近安装了 gulp 4 [来自 3.9.1],但在让我的 glob 像以前一样工作时遇到了问题。

我有一个要传输的整个目录[少一些其他子目录和文件]。

以下是相关代码:

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 处理 glob 的方式 [因为它似乎略有变化]?

4

1 回答 1

0

我无法让它与本机 gulp 一起使用,所以我想我会尝试 node glob包,这个选项似乎最适合用例。

首先,您需要像这样安装它:

npm install glob --save-dev

然后在你的 gulp gile 中引用它:

var gp_glob = require('glob');

最后,将其用作 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.

这按预期对我有用。希望能帮助到你。

于 2018-12-11T20:06:11.517 回答