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)
|
}
|
})
|