From 88f994c011ba913825cefae87ab5498b174aecc3 Mon Sep 17 00:00:00 2001
From: liujiangnan <695541723@qq.com>
Date: Wed, 25 Dec 2019 10:50:55 +0800
Subject: [PATCH] =?UTF-8?q?=E8=84=9A=E6=89=8B=E6=9E=B6=E6=94=B9=E5=8A=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 bin/publish.js | 83 ++++++++++++++++++++++++++++----------------------
 1 file changed, 47 insertions(+), 36 deletions(-)

diff --git a/bin/publish.js b/bin/publish.js
index 7b3fe08..c753bf3 100644
--- a/bin/publish.js
+++ b/bin/publish.js
@@ -7,6 +7,7 @@
   
 const path = require("path");
 const fs = require("fs");
+const fsp = fs.promises;
 const os = require('os');
 const compressing = require("compressing");
 
@@ -39,43 +40,56 @@ function clean(zipPath){
   }
 }
 
-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()){ //是目录则 递归 
-              checkDirectory(_src,_dst,copy);
-          }
-      });
-  });
-}
-var checkDirectory=function(src,dst,callback){
-  fs.access(dst, fs.constants.F_OK, (err) => {
-      if(err){
-          fs.mkdirSync(dst);
-          callback(src,dst);
-      }else{
-          callback(src,dst);
-      }
-    });
-}; 
+var copy=async function(src,dst){
+  let paths = await fsp.readdir(src); //同步读取当前目录
+  for(let i=0;i<paths.length;i++){
+    let path = paths[i];
+    var _src=src+'/'+path;
+    var _dst=dst+'/'+path;
+    var stats = await fsp.stat(_src);
+
+    if(stats.isFile()){ //如果是个文件则拷贝 
+      let readable=fs.createReadStream(_src);//创建读取流
+      let writable=fs.createWriteStream(_dst);//创建写入流
+      readable.pipe(writable);
+    }else if(stats.isDirectory()){ //是目录则 递归 
+      try {
+        await fsp.access(_dst, fs.constants.F_OK);
+      } catch (error) {
+        fs.mkdirSync(_dst);
+      } 
+      await copy(_src,_dst);
+    }
+  } 
+} 
 
 const runSpawn = async function (){ 
 
-  checkDirectory(path.resolve(__dirname,"../form"), path.resolve(__dirname,"../dist/form"),copy); 
-  checkDirectory(path.resolve(__dirname,"../index"), path.resolve(__dirname,"../dist/index"),copy); 
-  checkDirectory(path.resolve(__dirname,"../lib"), path.resolve(__dirname,"../dist/lib"),copy);   
-  await new Promise(function(resolve,reject){ 
+  try {
+    await fsp.access(path.resolve(__dirname,"../dist/form"), fs.constants.F_OK);
+  } catch (error) {
+    fs.mkdirSync(path.resolve(__dirname,"../dist/form"));
+  } 
+  try {
+    await fsp.access(path.resolve(__dirname,"../dist/index"), fs.constants.F_OK);
+  } catch (error) {
+    fs.mkdirSync(path.resolve(__dirname,"../dist/index"));
+  } 
+  try {
+    await fsp.access(path.resolve(__dirname,"../dist/lib"), fs.constants.F_OK);
+  } catch (error) {
+    fs.mkdirSync(path.resolve(__dirname,"../dist/lib"));
+  } 
+  await copy(path.resolve(__dirname,"../form"), path.resolve(__dirname,"../dist/form")); 
+  await copy(path.resolve(__dirname,"../index"), path.resolve(__dirname,"../dist/index")); 
+  await copy(path.resolve(__dirname,"../lib"), path.resolve(__dirname,"../dist/lib"));  
 
-    let pkg = require("../package.json"); 
+  let str = fs.readFileSync(path.resolve(__dirname,"../dist/index/index.html"),{encoding: 'utf8'});
+  str = str.replace('<base href="">','<base href="template-base-href">'); 
+  fs.writeFileSync(path.resolve(__dirname,"../dist/index/index.html"),str);
 
+  await new Promise(function(resolve,reject){  
+    let pkg = require("../package.json");  
     //要压缩的目录
     let zippath = path.resolve(__dirname,"../dist");  
     //压缩包的存放目录
@@ -117,8 +131,5 @@ let exec = async function(){
   await runSpawn();
 }
 
-exec();
-
- 
-
+exec();  
  
\ No newline at end of file
-- 
2.21.0