yunhan-cli
Version:
react17 + react-router + redux + typescript
51 lines (46 loc) • 1.37 kB
JavaScript
const fs = require('fs');
const path = require('path');
const list = process.argv;
const type = list[2] || 'base';
const p = path.resolve(__dirname, `../`);
const copy = function (src, dst) {
let paths = fs.readdirSync(src); //同步读取当前目录
paths.forEach(async function (path) {
const _src = src + '/' + path;
const _dst = dst + '/' + path;
await fs.stat(_src, async function (err, stats) {
//stats 该对象 包含文件属性
if (err) throw err;
if (stats.isFile()) {
//如果是个文件则拷贝
let readable = fs.createReadStream(_src); //创建读取流
let writable = fs.createWriteStream(_dst); //创建写入流
await readable.pipe(writable);
console.log(`${path} 写入完成`);
} else if (stats.isDirectory() && path !== 'node_modules' && path !== 'bin') {
//是目录则 递归
await checkDirectory(_src, _dst, copy);
}
});
});
};
const checkDirectory = function (src, dst, callback) {
fs.access(dst, fs.constants.F_OK, async (err) => {
if (err) {
await fs.mkdirSync(dst);
callback(src, dst);
} else {
callback(src, dst);
}
});
};
fs.stat(p, (err, stats) => {
if (err) {
console.log(err);
return;
}
if (stats.isDirectory()) {
checkDirectory(p, './', copy);
}
});