我正在尝试通过节点ncp library过滤文件,但它的过滤器无效。 一旦过滤器得到错误返回它就会破坏整个复制过程
ncp(source, destination, options, function (err) {
if (err) {
console.error("backup error:", err);
}
console.log("Backup of done!');
});
var options = {
filter: function (file) {
console.log("copying file:", file);
var res = file.toString().indexOf("\\testdrive") !== -1;
console.log("res:", res);
return !res;
},
//filter: new RegExp("\\testdrive"),//Or RegEx intance
};
因此,一旦过滤函数或RegEx实例得到错误,结果就是整个复制中断
options.filter - 一个RegExp实例,测试每个文件名以确定是否复制它,或者采用单个参数的函数:复制文件名,返回true或false,确定是否复制文件
答案 0 :(得分:0)
找到解决方案: 好像过滤器RegExp / function不仅会被调用ncp应该复制的文件名,还会被文件夹名调用。 它过滤的第一个文件夹名称显然是您作为源传递给ncp的名称。如果失败,ncp只会停止复制该文件夹中的任何内容。
答案 1 :(得分:0)
对于晚到聚会的人(如我):
ncp
遍历目录树,也要对目录的完整路径进行过滤,此外,还要对源目录本身进行测试。就我而言,我想从名为one.svg, zwei.svg, tres.svg
的单级目录中复制一堆(让它们称为images
)SVG文件,这导致以下代码:
ncp(srcImages, outImages, { filter: /.*(images|one\.svg|zwei\.svg|tres\.svg)$/ }, err => {
if (err) return console.error(err);
console.log('done!')
});
PS:请注意,正则表达式的末尾有$
,这意味着我们尝试匹配字符串的末尾