UNPKG

egg-xc-base

Version:

a base framework with egg.js

165 lines (156 loc) 6.76 kB
'use strict'; const fs = require('fs'); const path = require('path'); module.exports = async function(app) { if(!fs.existsSync(path.join(app.options.baseDir, '/api'))){ fs.mkdirSync(path.join(app.options.baseDir, '/api')) } if(!fs.existsSync(path.join(app.options.baseDir, '/app'))){ fs.mkdirSync(path.join(app.options.baseDir, '/app')) } if(!fs.existsSync(path.join(app.options.baseDir, '/app/service'))){ fs.mkdirSync(path.join(app.options.baseDir, '/app/service')) } if(!fs.existsSync(path.join(app.options.baseDir, '/app/controller'))){ fs.mkdirSync(path.join(app.options.baseDir, '/app/controller')) } if(!fs.existsSync(path.join(app.options.baseDir, '/app/router.js'))){ fs.writeFileSync(path.join(app.options.baseDir, '/app/router.js'), `'use strict'; /** * @param {Egg.Application} app - egg application */ module.exports = app => { const { router, controller } = app; router.get('/', controller.home.index); };` ) } if (!fs.existsSync(path.join(app.options.baseDir, '/app/controller/sso.js'))) { fs.writeFileSync(path.join(app.options.baseDir, '/app/controller/sso.js'), fs.readFileSync(path.join(__dirname, './sso.js')).toString()); } let router = fs.readFileSync(path.join(app.options.baseDir, '/app/router.js')).toString(); router = router.replace(/(^\s*)|(\s*$)/g, ''); let routerChanged = false; if (router.indexOf('@apiDefine') === -1) { routerChanged = true; router = router.split('use strict\';')[1]; router = `'use strict'; /** * @apiDefine Error0 * @apiSuccess {string} Error0.code=0 错误码 * @apiSuccess {string} Error0.message=Success 错误信息! */ /** * @apiDefine Error1 * @apiError {string} Error1.code * 10000:鉴权相关。 * 20000:数据库相关。 * 30000:服务端逻辑。 * 10001:jwt 验证错误。 * 10002:oauth 验证错误。 * 10003:参数验证错误。 * 20001:redis Error错误码。 * @apiError {string} Error1.message=xxx 错误信息! * @apiError {object} Error1.info=xxx 错误内容! */ ${router}`; } const apiRouter = `//单点返回 router.all(\`\${app.config.static && app.config.static.prefix?app.config.static.prefix:''}/sso/callback\`, controller.sso.callback) //退出 router.all(\`\${app.config.static && app.config.static.prefix?app.config.static.prefix:''}/sso/logout\`, controller.sso.logout) `; if (router.indexOf(`controller.sso.callback`) === -1 && router.indexOf(`controller.sso.logout`) === -1) { routerChanged = true; router = router.substr(0, router.lastIndexOf('}')); router = `${router} ${apiRouter} };`; } if (routerChanged) { fs.writeFileSync(path.join(app.options.baseDir, '/app/router.js'), router); } if (!fs.existsSync(path.join(app.options.baseDir, '/apidoc.json'))) { fs.writeFileSync(path.join(app.options.baseDir, '/apidoc.json'), JSON.stringify({ name: app.config.name, version: '1.0.0', description: `api doc for ${app.config.name}`, apidoc: { title: `api doc for ${app.config.name}`, url: 'http://localhost:7001', }, }, 2, 2)); } let isFull = true let pkg = app.config.pkg if(!pkg.scripts.doc){ isFull = false pkg.scripts.doc = "apidoc -i app/ -o app/public/apidoc" } if(!pkg.scripts["doc-app"]){ isFull = false pkg.scripts["doc-app"] = "apidoc -i app/ -o app/public/doc/app" } if(!pkg.scripts["doc-api"]){ isFull = false pkg.scripts["doc-api"] = "apidoc -i api/ -o app/public/doc/api" } if(!pkg.scripts["api-init"]){ isFull = false pkg.scripts["api-init"] = "node .init/.apiInit.js" } if(!pkg.scripts["api-ctx"]){ isFull = false pkg.scripts["api-ctx"] = "node .init/.apiCtx.js" } if(!pkg.scripts["api"]){ isFull = false pkg.scripts["api"]= "node .init/.api.js" } if(!pkg.scripts["init-config"]){ isFull = false pkg.scripts["init-config"]= "node .init/.initConfig.js" } if(!isFull){ fs.writeFileSync(path.join(app.options.baseDir, '/package.json'),JSON.stringify(pkg,2,2)) } if (!fs.existsSync(path.join(app.options.baseDir, '/.init'))) { fs.mkdirSync(path.join(app.options.baseDir, '/.init')); } if (!fs.existsSync(path.join(app.options.baseDir, '/.init/.config'))) { fs.mkdirSync(path.join(app.options.baseDir, '/.init/.config')); } if (!fs.existsSync(path.join(app.options.baseDir, '/.init/.api.js'))) { fs.writeFileSync(path.join(app.options.baseDir, '/.init/.api.js'), fs.readFileSync(path.join(__dirname, `./.init/.api.js`)).toString()); } if (!fs.existsSync(path.join(app.options.baseDir, '/.init/.apiCtx.js'))) { fs.writeFileSync(path.join(app.options.baseDir, '/.init/.apiCtx.js'), fs.readFileSync(path.join(__dirname, `./.init/.apiCtx.js`)).toString()); } if (!fs.existsSync(path.join(app.options.baseDir, '/.init/.apiInit.js'))) { fs.writeFileSync(path.join(app.options.baseDir, '/.init/.apiInit.js'), fs.readFileSync(path.join(__dirname, `./.init/.apiInit.js`)).toString()); } if (!fs.existsSync(path.join(app.options.baseDir, '/.init/.apiInitDb.js'))) { fs.writeFileSync(path.join(app.options.baseDir, '/.init/.apiInitDb.js'), fs.readFileSync(path.join(__dirname, `./.init/.apiInitDb.js`)).toString()); } if (!fs.existsSync(path.join(app.options.baseDir, '/.init/.apiInitNormal.js'))) { fs.writeFileSync(path.join(app.options.baseDir, '/.init/.apiInitNormal.js'), fs.readFileSync(path.join(__dirname, `./.init/.apiInitNormal.js`)).toString()); } if (!fs.existsSync(path.join(app.options.baseDir, '/.init/.apiNormal.js'))) { fs.writeFileSync(path.join(app.options.baseDir, '/.init/.apiNormal.js'), fs.readFileSync(path.join(__dirname, `./.init/.apiNormal.js`)).toString()); } if (!fs.existsSync(path.join(app.options.baseDir, '/.init/.temp_init.json'))) { fs.writeFileSync(path.join(app.options.baseDir, '/.init/.temp_init.json'), fs.readFileSync(path.join(__dirname, `./.init/.temp_init.json`)).toString()); } if (!fs.existsSync(path.join(app.options.baseDir, '/.init/.initConfig.js'))) { fs.writeFileSync(path.join(app.options.baseDir, '/.init/.initConfig.js'), fs.readFileSync(path.join(__dirname, `./.init/.initConfig.js`)).toString()); } if (!fs.existsSync(path.join(app.options.baseDir, '/.init/.config/.config.default.js'))) { fs.writeFileSync(path.join(app.options.baseDir, '/.init/.config/.config.default.js'), fs.readFileSync(path.join(__dirname, `./.init/.config/.config.default.js`)).toString()); } if (!fs.existsSync(path.join(app.options.baseDir, '/.init/.config/.plugin.js'))) { fs.writeFileSync(path.join(app.options.baseDir, '/.init/.config/.plugin.js'), fs.readFileSync(path.join(__dirname, `./.init/.config/.plugin.js`)).toString()); } };