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管理员

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

本月创作热力图

最新评论
西风
西风
3月7日
暂时不需要也能跑
Kevin
Kevin
3月6日
请教,小网站,1000ip不到,小主机,2c4g,到底 redis 还是 macached 合适啊
hfloke
hfloke
3月1日
新版本安装更新后,页面有问题哦
丙氨酸
丙氨酸
2月27日
测试
评论于关于本站
RiseForever
RiseForever
2月23日
听说新主题发布了,来测试下评论区。