UNPKG

5ayuan

Version:

82 lines (65 loc) 2.48 kB
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 }