5ayuan
Version:
82 lines (65 loc) • 2.48 kB
JavaScript
const { promisify } = require('util')
const download = promisify(require("download-git-repo"))
const {vueRepo} = require("../config/repo-config")
const {
compile,
writeFile,
createDirSync} = require('../utils/utils')
const commandSpawn = require('../utils/terminal')
const program = require('commander')
const path = require('path')
// commandSpawn.then(res=>{
// console.log(res);
const createProjectAction = async (project) => {
// })
console.log('\x1b[36m5ayuan helps you create your project... \x1b[0m')
//1.clone项目
// console.log(project);
await download(vueRepo,project,{clone:true})
//2.执行npm install
// console.log(process.platform);
const command = process.platform === "win32" ? "npm.cmd" : "npm"
await commandSpawn(command,['install'],{cwd :`./${project}`})
//3.运行npm run serve
await commandSpawn(command,['run','serve'],{cwd :`./${project}`})
}
const addTemplatesAction = async (name,dest) => {
// 2.解析ejs模板
const result = await compile('vue-component.ejs',{name,lowername:name.toLowerCase()})
//3.将模板写入到对应的文件中去
const templatePath = path.resolve(dest,`${name}.vue`)
writeFile(templatePath,result)
//4.将对应的文件放到相应的文件夹中
}
const addPageAction = async (name,dest) =>{
// console.log(createDirSync(dest));
const vueTemplates = await compile('vue-component.ejs',{name,lowername:name.toLowerCase()})
const vueRouter = await compile('vue-router.ejs',{name,lowername:name.toLowerCase()})
if(createDirSync(dest))
{
const templatePath = path.resolve(dest,`${name}.vue`)
// console.log(templatePath);
const routerPath = path.resolve(dest,"router.js")
writeFile(templatePath,vueTemplates)
writeFile(routerPath,vueRouter)
}
}
const addStoreAction = async (name,dest) =>{
// console.log(createDirSync(dest));
const vueStore = await compile('vue-store.ejs',{name,lowername:name.toLowerCase()})
const vueTypes = await compile('vue-types.ejs',{name,lowername:name.toLowerCase()})
if(createDirSync(dest))
{
const storePath = path.resolve(dest,`${name}.js`)
// console.log(templatePath);
const typesPath = path.resolve(dest,"types.js")
writeFile(storePath,vueStore)
writeFile(typesPath,vueTypes)
}
}
module.exports = {
createProjectAction,
addTemplatesAction,
addPageAction,
addStoreAction
}