UNPKG

gxd-vue-library

Version:

依赖与element Ui插件库,聚福宝福利PC端插件库

119 lines (91 loc) 2.93 kB
'use strict'; const fileHelper = require('./../fileHepler'); const basePath = require('./../path'); const clog = require('./../clog'); const routerDirectory = basePath.routerDirectory; const logDir = basePath.logDir; const viewsBase = basePath.viewsBase; const template = require('art-template'); template.defaults.imports.raw = JSON.stringify; const gitIgnore = require('./../lib/gitignore'); const utils = require('./../lib/utils'); let { beautifyFile, getArgv, getApiData, getPagesData, dateToTime, getLogs } = utils; /** * @description 默认meta信息 * @type {{roles: [string], icon: string, iconSize: number}} */ const defaultMeta = { icon: 'el-icon-document', redirect: 'noRedirect' }; let schemasArray = []; let schemas = fileHelper.getDirFiles(basePath.schemasDirectory, ['js']); Object.keys(schemas).map(key => { schemasArray.push(require(basePath.schemasDirectory + '/' + schemas[key]['fullName'])); }); const init = (schemas) => { let router = []; //生成APIS let model = []; let routerPages = []; //判断是否单独生成页面 if (getArgv().length > 0) { schemas = schemas.filter(item => { if (item.name === getArgv()[0]) { return item } }) } //模块不存在 if (schemas.length === 0) { clog(`【${getArgv()}】模块不存在`, 'red'); return; } //系统模块不做生成路由处理 schemas.map(item=>{ model.push(item.name); if(item.name !== 'system') { //根无meta信息,使用默认meta if (!item.meta) item = {...item, meta: defaultMeta}; //过滤没有配置router的页面 let pages = getPagesData(item).filter((it) => { return it.router !== undefined; }); //保存有设置router的页面 if(pages.length > 0) router.push({...getApiData(item), sort: (item.sort || 10),meta: item.meta, pages}) } }); //处理生成逻辑 let fileNames = []; router.map((item, index) => { //判断文件是否存在 if(!fileHelper.existFileSync(`${routerDirectory}/modules`)){ fileHelper.mkdirSync(routerDirectory, 'modules'); } let tempPath = `${routerDirectory}/modules/${item.fileName}`; let html = template(basePath.buildTemplateDirectory + '/coder/router.txt', { items: item, time: dateToTime(Math.floor(new Date().getTime() / 1000)), filename: `${item.fileName}`, viewsBase }); routerPages.push(fileHelper.writeFile(tempPath, beautifyFile(html))); fileNames.push(item.fileName); }); routerPages.push(gitIgnore(fileNames, routerDirectory + '/modules')); Promise.all(routerPages) .then(res=>{ clog(`生成模块:【${model.join('】,【')}】`, 'blueBG'); clog(' ROUTER 创建完成!', 'green'); fileHelper.writeFileSync(logDir + '/router', getLogs('router', `【${model.join('】,【')}】`)); }) .catch( ) }; init(schemasArray);