UNPKG

sy-w5vue

Version:
42 lines (40 loc) 1.79 kB
#!/usr/bin/env node const path = require('path') const inquirer = require('inquirer'); let resolve = params => path.resolve(params); var fs = require('fs-extra') var handlebars = require('handlebars'); var jsons = {}; //全局变量 const parallel = async () => { // 基础信息 jsons = await run([ { type: 'input', name: 'name', message: 'vue文件名', default: "name" }, { type: 'input', name: 'path', message: 'pages下的路径(默认为vue文件名):', default: "" }, { type: 'input', name: 'name_zh', message: '中文名称:', default: "name" }, ]); var content = fs.readFileSync(`${__dirname}/scripts/tpltabs.hbs`).toString(); var result = handlebars.compile(content)(jsons); // 读取配置文件 fs.readFile('pages.json', 'utf8', function (err, data) { if (err) return; var t = JSON.parse(data); var pages = t.pages; pages.push({ "path": `pages/${jsons.path || jsons.name}/${jsons.name}`, "style": { "navigationBarTitleText": jsons.name_zh || "", "navigationStyle": "custom" } }) var t1 = JSON.stringify(t,"","\t"); fs.writeFileSync(resolve('.') + '/pages.json', t1) }); fs.ensureDir(`${resolve('.')}/static/${jsons.name}`); fs.ensureFileSync(`${resolve('.')}/pages/${jsons.path || jsons.name}/${jsons.name_zh}`, ''); fs.ensureFileSync(`${resolve('.')}/pages/${jsons.path || jsons.name}/${jsons.name}.vue`); fs.outputFile(`${resolve('.')}/pages/${jsons.path || jsons.name}/${jsons.name}.vue`, result); } async function run(arr) { return new Promise(resolve => { inquirer.prompt(arr).then(e => { resolve(e) }) }) } parallel(); // 同步运行