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.yydfqli.cn/copy-dir.html
文章版權歸作者所有,未經允許請勿轉載。
THE END