zhangzengfei
2022-02-22 9466f8f5d714c8f72dbaff6ac3898b4d43c7c715
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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)