我使用带有通配模式的cpy来查找并复制src/main/css
中的所有文件,并将它们放在./dist
中。
但是现在我还有src/main/css
下面的子目录(例如src/main/css/margins/index.css
),而cpy在复制文件时不包含这些子目录。
Node(fs或path?)中是否有处理此案例的API,或者有人知道一个方便的包?
答案 0 :(得分:1)
试试这个。
const fs = require('fs');
const path = require('path');
var mkdir = function (dir) {
// making directory without exception if exists
try {
fs.mkdirSync(dir, 0755);
} catch (e) {
if (e.code != "EEXIST") {
throw e;
}
}
};
var copy = function (src, dest) {
var readS = fs.createReadStream(src);
var writeS = fs.createWriteStream(dest);
readS.pipe(writeS);
readS.on("end", function () {
// Operation done
});
};
var copyDir = function (src, dest) {
mkdir(dest);
var files = fs.readdirSync(src);
for (var i = 0; i < files.length; i++) {
var current = fs.lstatSync(path.join(src, files[i]));
if (current.isDirectory()) {
copyDir(path.join(src, files[i]), path.join(dest, files[i]));
} else if (current.isSymbolicLink()) {
var symlink = fs.readlinkSync(path.join(src, files[i]));
fs.symlinkSync(symlink, path.join(dest, files[i]));
} else {
copy(path.join(src, files[i]), path.join(dest, files[i]));
}
}
};
copyDir('./src', './dest');
这段代码的灵感来自https://gist.github.com/tkihira/3014700。我已经对原始代码进行了一些修改以使其工作,因为util.pump现在已经过时了。
答案 1 :(得分:-1)