diff --git a/bin/publish.js b/bin/publish.js index 7b3fe082c85561079dc25e04f91a07b5e5c1a1a9..c753bf3e08115dd266fad49a97977cce7cda116a 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