jsconst fs = require('fs');
const path = require('path');
/**
* 复制目录
* @param {string} originDir 源目录
* @param {string} remoteDir 目标目录
*/
function copyDir(originDir, remoteDir) {
if (!fs.existsSync(remoteDir)) {
// recursive:递归
fs.mkdirSync(remoteDir, { recursive: true });
}
// 转成dirent对象数组,否则只有[名称]数组
let files = fs.readdirSync(originDir, { withFileTypes: true });
console.log('print ~ copyDir ~ files:', files);
files.forEach((file) => {
if (file.isDirectory()) {
copyDir(
path.resolve(originDir, file.name),
path.resolve(remoteDir, file.name),
);
} else {
fs.copyFileSync(
path.resolve(originDir, file.name),
path.resolve(remoteDir, file.name),
);
}
});
console.log('print ~ copyDir ~ files:', files);
}
jsconst fs = require('fs');
const path = require('path');
const archiver = require('archiver');
/**
* 压缩目录
* @param {string} sourceDir 源目录
* @param {string} outPath 输出路径
*/
function zipDir(sourceDir, outPath) {
return new Promise((resolve, reject) => {
const output = fs.createWriteStream(outPath);
const archive = archiver('zip', {
zlib: { level: 9 }, // 压缩级别 1-9
});
output.on('close', () => {
console.log(`压缩完成:${archive.pointer()} bytes`);
resolve();
});
archive.on('error', (err) => reject(err));
archive.pipe(output);
// 把整个目录加入 zip
archive.directory(sourceDir, false);
archive.finalize();
});
}
本文作者:薛祁
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!