我最近从[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的方法(因为它似乎已略有变化)?
答案 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
选项。
这按预期对我有用。希望对您有所帮助。