pacvue-cli
Version:
95 lines (88 loc) • 2.69 kB
text/typescript
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;