NodeJS 使用copy-dir 快速复制内容
Node虽然自带有文件处理库,但是用起来不是特别方便。找了一下,发现一个第三方库,非常好用,现在就记录一下。
copy-dir
copy-dir是一款第三方的功能库,支持使用过滤器对复制文件的内容,进行过滤。将文件或目录复制到另一个路径,当目标路径或父目标路径不存在时,它还可以自动创建目录。
https://www.npmjs.com/package/copy-dir使用方法
安装库
npm install copy-dir
同步方法
这个很好用
copydir.sync(from, to[, options]);
参数说明
utimes
: 默认为false
,如果设置为true
,则保留文件的访问和修改时间戳。mode
: 默认为false
,如果设置为true
,则保留文件的权限模式。cover
: 默认为true
,如果设置为false
,则在目标路径已存在同名文件时不会覆盖。filter
: 一个函数,用于过滤路径。返回true
表示复制,返回false
表示不复制。
示例
var copydir = require('copy-dir');
copydir.sync('/my/from/path', '/my/target/path', {
utimes: true,
mode: true,
cover: true
});
这是简单的直接复制内容到指定文件夹了
可以添加过滤器,指定文件夹或者文件可以不要。在方法里面返回false就表示不复制
var path = require('path');
var copydir = require('copy-dir');
copydir.sync('/my/from/path', '/my/target/path', {
filter: function(stat, filepath, filename) {
if (stat === 'file' && path.extname(filepath) === '.html') {
return false;
}
if (stat === 'directory' && filename === '.svn') {
return false;
}
if (stat === 'symbolicLink') {
return false;
}
return true;
}
});
console.log('done');
异步方法
var copydir = require('copy-dir');
copydir(from, to, [options, ]callback);
其中,call为回调函数
改造函数
果核改造一个方法出来,让函数更好用
dir:源文件
targetDir:目标文件
eliminate_dir:排除的文件夹,数组
eliminate_suffix:排除指定后缀名的文件,数组,例如:['.log','.txt']
eliminate_files:排除指定文件,完整的文件名,数组
function copy(dir, targetDir, eliminate_dir, eliminate_suffix, eliminate_files) {
copy_dir.sync(dir, targetDir, {
filter: (stat, filepath, filename) => {
if (stat === 'directory') {
return !eliminate_dir.includes(filename);
}
if (stat === 'file') {
let suffix = path.extname(filepath);
if (eliminate_suffix.includes(suffix)) {
return false;
} else if (eliminate_files.includes(filename)) {
return false;
}
return true;
}
}
});
}
版权声明:
作者:applek
链接:http://www.lovestu.com/copy-dir.html
文章版权归作者所有,未经允许请勿转载。
THE END