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;
            }
        }
    });
}

 

 

上一篇 解决 WordPress 后台仪表盘慢问题
下一篇 Core AI Power 1.1.0 - WordPress AI 增强插件
目录
applek

applek管理员

个人说明在个人中心里面设置

本月创作热力图

最新评论
Mr.C
Mr.C
4月12日
个人建议,下个版本考虑将下载地址加密(防止采集)
Felix
Felix
4月1日
你好我想请教一下,为什么我php和redis都安装了,还是连接不上,一直显示未安装,旧插件文件也清理了
Mike
Mike
4月1日
当前页跳转一个页面,然后回退上一页,顶部进度条会缓慢加载,并且加载不完
评论于留言建议
Mike
Mike
4月1日
文章页划到最底部,侧边栏中切换作者发言会溢出
评论于留言建议
陇安辞
陇安辞
3月31日
guzhang
评论于关于本站