const fs = require('fs') const path = require("path"); const glob = require('glob') function cleanDir(path) { let files = []; if (fs.existsSync(path)) { files = fs.readdirSync(path); files.forEach((file, index) => { let curPath = path + "/" + file; if (fs.statSync(curPath).isDirectory()) { cleanDir(curPath); //递归删除文件夹 } else { fs.unlinkSync(curPath); //删除文件 } }); fs.rmdirSync(path); } } var copy = function (src, dst) { let paths = fs.readdirSync(src); //同步读取当前目录 paths.forEach(function (path) { var _src = src + '/' + path; var _dst = dst + '/' + path; fs.stat(_src, function (err, stats) { //stats 该对象 包含文件属性 if (err) throw err; if (stats.isFile()) { //如果是个文件则拷贝 let readable = fs.createReadStream(_src);//创建读取流 let writable = fs.createWriteStream(_dst);//创建写入流 readable.pipe(writable); } else if (stats.isDirectory()) { //是目录则 递归 copyDirectory(_src, _dst, copy); } }); }); } function mkdirsSync(dirname, mode) { if (fs.existsSync(dirname)) { return true; } else { if (mkdirsSync(path.dirname(dirname), mode)) { fs.mkdirSync(dirname, mode); return true; } } } var copyDirectory = function (src, dst, callback) { // console.log("> \t", dst) if (!fs.existsSync(src)) { return; } fs.access(dst, fs.constants.F_OK, (err) => { if (err) { mkdirsSync(dst); callback(src, dst); } else { callback(src, dst); } }); }; console.log("> \tClass the apps") const baseDir = "app" // 清空app 文件夹 cleanDir(baseDir) glob.sync('./src/pages/**/main.ts').forEach(path => { const appDir = path.split('./src/pages/')[1].split('/main.ts')[0]; if (appDir != "index") { let app = appDir.split('/index')[0] copyDirectory("dist/js/" + app, baseDir + "/" + app + "/js/" + app, copy) copyDirectory("dist/css/" + app, baseDir + "/" + app + "/css/" + app, copy) copyDirectory("dist/view/" + app, baseDir + "/" + app + "/view/" + app, copy) copyDirectory("dist/images/" + app, baseDir + "/" + app + "/images/" + app, copy) copyDirectory("static/" + app, baseDir + "/" + app, copy) } }) // 移动element woff copyDirectory("dist/fonts/", "dist/css/fonts/", copy)