sy-w5vue
Version:
uniapp模板快速生成
42 lines (40 loc) • 1.79 kB
JavaScript
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(); // 同步运行