egg-xc-base
Version:
a base framework with egg.js
165 lines (156 loc) • 6.76 kB
JavaScript
;
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());
}
};