UNPKG

pacvue-cli

Version:

95 lines (88 loc) 2.69 kB
import download = require("download-git-repo"); const log = require('single-line-log').stdout; import fs = require('fs-extra') class ProgressLog { timeSc: NodeJS.Timeout; num:number; constructor() { this.timeSc = setInterval(()=> { this.render() },200) this.num = 1 } drawLine(num) { const out = num%3 let line = '-' switch(out) { case 0: line='-' break case 1: line='\\' break case 2: line='/' break default: line = '-' } return line } render() { this.num++ log(this.drawLine(this.num)+'正在下载远程项目') } destroyTime() { clearInterval(this.timeSc) } } const Create = async function (name: string): Promise<void> { const progressLog = new ProgressLog() fs.ensureDirSync(process.cwd()+'/'+name) try { await new Promise((resolve) => { download( "direct:http://git.jirapac.tech:7990/scm/vuec/admin-template.git", process.cwd() + `/` + name, { clone: true }, function (err) { if (err) { console.log('\x1B[31m%s\x1B[0m', err) } else { resolve(true); console.log('download Success') } } ); }); }catch (err) { console.error(err) progressLog.destroyTime() } progressLog.destroyTime() try { console.log('正在配置相关环境') // await fs.remove(process.cwd() + `/${name}/.git`) const packageObj = fs.readJsonSync(process.cwd()+'/'+name+'/package.json') packageObj.name = name fs.writeJsonSync(process.cwd()+'/'+name+'/package.json', packageObj, { spaces:'\t' }) const developStr = fs.readFileSync(process.cwd()+'/'+name+'/.env.development','utf-8') developStr.replace(/demo/g, name) fs.writeFileSync(process.cwd()+'/'+name+'/.env.development',developStr,'utf-8') const productionStr = fs.readFileSync(process.cwd()+'/'+name+'/.env.production','utf-8') productionStr.replace(/demo/g, name) fs.writeFileSync(process.cwd()+'/'+name+'/.env.production',productionStr,'utf-8') const viteHtmlStr = fs.readFileSync(process.cwd()+'/'+name+'/index.html','utf-8') viteHtmlStr.replace(/demo/g, name) fs.writeFileSync(process.cwd()+'/'+name+'/index.html',viteHtmlStr,'utf-8') const vueHtmlStr = fs.readFileSync(process.cwd()+'/'+name+'/public/index.html','utf-8') vueHtmlStr.replace(/demo/g, name) fs.writeFileSync(process.cwd()+'/'+name+'/public/index.html',vueHtmlStr,'utf-8') console.log('配置相关环境完成') } catch (err) { console.log('\x1B[31m%s\x1B[0m', err) } }; export default Create;