Я использовал cpy с шаблоном подстановки, чтобы найти и скопировать все файлы в src/main/css
и поместить их в ./dist
.
Однако теперь у меня также есть подкаталоги ниже src/main/css
(например, src/main/css/margins/index.css
), и cpy не включает их при копировании файлов.
Есть ли в Node API (fs или path?), Который обрабатывает этот случай, или кто-нибудь знает удобный пакет?
В итоге я использовал copy-dir
require('copy-dir').sync(PLI.src.main.css, PLI.DIST);
Если у кого-то есть способ сделать то же самое с Node и избежать зависимостей, сообщите об этом.
Попробуй это.
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 устарел.