UNPKG

@wenxin_dy/wx-vue-cli

Version:

91 lines (76 loc) 2.77 kB
const { promisify } = require('util'); const path = require('path'); const download = promisify(require('download-git-repo')); const open = require('open'); const { vueRepo } = require('../config/repo-config'); const { commandSpawn } = require('../utils/terminail'); const { compile, writerFileSync, createDirSync } = require('../utils'); const createActions = async (project) => { console.log('wnpm helps you create you project'); try { // clone项目 await download(vueRepo, project, { clone: true }) // 执行npm install const command = process.platform === 'win32' ? 'npm.cmd' : 'npm'; await commandSpawn(command, ['install'], { cwd: `./${project}` }); // 执行npm run serve commandSpawn(command, ['run', 'serve'], { cwd: `./${project}` }); // 打开浏览器 open('http//localhost:8080/'); } catch (error) { console.log(error, 'error'); } } const createComponentActions = async (name, dest) => { try { // 编译模版 const result = await compile('vue-component.ejs', {name, lowerName: name.toLowerCase() }); // 写入文件 const targetPath = path.resolve(dest, `${name}.vue`); writerFileSync(targetPath, result); } catch (error) { console.log(error, 'error'); } } const createPagesActions = async (name, dest) => { try { // 编译模版 const comonentResult = await compile('vue-component.ejs', {name, lowerName: name.toLowerCase() }); const routerResult = await compile('vue-router.ejs', {name, lowerName: name.toLowerCase() }); const destPath = path.resolve(dest, name.toLowerCase()); if (createDirSync(destPath)) { // 写入文件 const comonentPath = path.resolve(destPath, `${name}.vue`); writerFileSync(comonentPath, comonentResult); // 写入文件 const routerPath = path.resolve(destPath, 'router.js'); writerFileSync(routerPath, routerResult); } } catch (error) { console.log(error, 'error'); } } const createStoresActions = async (name, dest) => { try { // 编译模版 const storeResult = await compile('vue-store.ejs', {name, lowerName: name.toLowerCase() }); const typesResult = await compile('vue-types.ejs', {name, lowerName: name.toLowerCase() }); const destPath = path.resolve(dest, name.toLowerCase()); if (createDirSync(destPath)) { // 写入文件 const storePath = path.resolve(destPath, `${name}.vue`); writerFileSync(storePath, storeResult); // 写入文件 const typesPath = path.resolve(destPath, 'types.js'); writerFileSync(typesPath, typesResult); } } catch (error) { console.log(error, 'error'); } } module.exports = { createActions, createComponentActions, createPagesActions, createStoresActions, }