Gulp 4 glob排除无法使用的特定文件和文件夹

时间:2018-12-11 17:16:42

标签: gulp glob gulp-4

我最近从[3.9.1]安装了gulp 4,但在使我的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的方法(因为它似乎已略有变化)?

1 个答案:

答案 0 :(得分:0)

我无法使它与本机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选项。

这按预期对我有用。希望对您有所帮助。