Co-authored-by: James <james@trbl.design> Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import express from 'express';
|
|
import compression from 'compression';
|
|
import history from 'connect-history-api-fallback';
|
|
import path from 'path';
|
|
import initWebpack from '../webpack/init';
|
|
import { Payload } from '../index';
|
|
|
|
const router = express.Router();
|
|
|
|
function initAdmin(ctx: Payload): void {
|
|
if (!ctx.config.admin.disable) {
|
|
router.use(history());
|
|
|
|
if (process.env.NODE_ENV === 'production') {
|
|
router.get('*', (req, res, next) => {
|
|
if (req.path.substr(-1) === '/' && req.path.length > 1) {
|
|
const query = req.url.slice(req.path.length);
|
|
res.redirect(301, req.path.slice(0, -1) + query);
|
|
} else {
|
|
next();
|
|
}
|
|
});
|
|
|
|
router.use(compression(ctx.config.express.compression));
|
|
router.use(express.static(path.resolve(process.cwd(), 'build'), { redirect: false }));
|
|
|
|
ctx.express.use(ctx.config.routes.admin, router);
|
|
} else {
|
|
ctx.express.use(ctx.config.routes.admin, history());
|
|
ctx.express.use(initWebpack(ctx.config));
|
|
}
|
|
}
|
|
}
|
|
|
|
export default initAdmin;
|