wypcli
Version:
```npm install wypcli```
188 lines (155 loc) • 5.14 kB
JavaScript
;
// promise工具
var program = require("commander");
var path = require('path');
var open = require('open');
var chalk = require('chalk');
var fs = require('fs');
var _require = require('util'),
promisify = _require.promisify;
var download = promisify(require('download-git-repo'));
var _require2 = require('../config/repo-config'),
vueRepo = _require2.vueRepo;
var _require3 = require('../untils/terminal'),
commandSpawn = _require3.commandSpawn;
var _require4 = require('../untils/until'),
compile = _require4.compile,
writeToFile = _require4.writeToFile;
/**
* 创建项目Action
*
* */
var createProjectAction = function createProjectAction(project) {
var command;
return regeneratorRuntime.async(function createProjectAction$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
console.log(chalk.yellow('wuyupei help you create Vue Project')); // 1.clone项目模板
_context.next = 3;
return regeneratorRuntime.awrap(download(vueRepo, project, {
clone: true
}));
case 3:
command = process.platform === 'win32' ? 'npm.cmd' : 'npm'; // 2.npm install 安装依赖
_context.next = 6;
return regeneratorRuntime.awrap(commandSpawn(command, ['install'], {
cwd: "./".concat(project)
}));
case 6:
// 3.运行项目 npm run serve
commandSpawn(command, ['run', 'serve'], {
cwd: "./".concat(project)
}); // 4.打开浏览器
open('http://localhost:8080');
case 8:
case "end":
return _context.stop();
}
}
});
};
/**
*添加组件Action
*/
var addComponentAction = function addComponentAction(name) {
var result, targetPath;
return regeneratorRuntime.async(function addComponentAction$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return regeneratorRuntime.awrap(compile('vue-template.ejs', {
name: name,
lowername: name.toLowerCase()
}));
case 2:
result = _context2.sent;
// 写文件到指定的文件里 program.opts().dest 获取参数
targetPath = path.resolve(program.opts().dest || 'src/components', "".concat(name, ".vue"));
writeToFile(targetPath, result);
case 5:
case "end":
return _context2.stop();
}
}
});
};
/**
* 添加pageAction
*/
var addPageAction = function addPageAction(name) {
var pageResult, routeResult, targetPagePath, targetRoutePath;
return regeneratorRuntime.async(function addPageAction$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return regeneratorRuntime.awrap(compile('vue-template.ejs', {
name: name,
lowername: name.toLowerCase()
}));
case 2:
pageResult = _context3.sent;
_context3.next = 5;
return regeneratorRuntime.awrap(compile('vue-router.ejs', {
name: name,
lowername: name.toLowerCase()
}));
case 5:
routeResult = _context3.sent;
targetPagePath = path.resolve(program.opts().dest, "".concat(name, ".vue"));
targetRoutePath = path.resolve(program.opts().dest, "route.js");
fs.mkdir(program.opts().dest, function (err) {
if (err) {
console.log(chalk.red(err));
}
});
writeToFile(targetPagePath, pageResult);
writeToFile(targetRoutePath, routeResult);
case 11:
case "end":
return _context3.stop();
}
}
});
};
/**
* 添加storeAction
*/
var addStoreAction = function addStoreAction(store) {
var storeResult, typesResult, targetStorePath, targetResultPath;
return regeneratorRuntime.async(function addStoreAction$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return regeneratorRuntime.awrap(compile('vue-store.ejs', {}));
case 2:
storeResult = _context4.sent;
_context4.next = 5;
return regeneratorRuntime.awrap(compile('vue-types.ejs', {}));
case 5:
typesResult = _context4.sent;
targetStorePath = path.resolve(program.opts().dest, "index.js");
targetResultPath = path.resolve(program.opts().dest, "types.js");
fs.mkdir(program.opts().dest, function (err) {
if (err) {
console.log(chalk.red(err));
}
});
writeToFile(targetStorePath, storeResult);
writeToFile(targetResultPath, typesResult);
case 11:
case "end":
return _context4.stop();
}
}
});
};
module.exports = {
createProjectAction: createProjectAction,
addComponentAction: addComponentAction,
addPageAction: addPageAction,
addStoreAction: addStoreAction
};