0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00
ghost/core/server/web/parent/app.js
Hannah Wolfe 77996d1ee4
Moved vhost arg logic out of the parent app
- Makes the logic for determining the admin and frontend vhost args independent and easier to test
- Moved the tests to specifically test the vhost utils & removed proxyquire as a dependency
- We want to breakdown the current parent app into the existing core/app.js and boot code, allowing us to decouple the backend and frontend further
- This is all part of the refactoring to separate server and frontend completely
2021-06-28 19:38:42 +01:00

41 lines
1.3 KiB
JavaScript

const debug = require('@tryghost/debug')('web:parent');
const config = require('../../../shared/config');
const express = require('../../../shared/express');
const compress = require('compression');
const mw = require('./middleware');
const vhost = require('@tryghost/vhost-middleware');
const vhostUtils = require('./vhost-utils');
module.exports = function setupParentApp(options = {}) {
debug('ParentApp setup start');
const parentApp = express('parent');
parentApp.use(mw.requestId);
parentApp.use(mw.logRequest);
// Register event emmiter on req/res to trigger cache invalidation webhook event
parentApp.use(mw.emitEvents);
// enabled gzip compression by default
if (config.get('compress') !== false) {
parentApp.use(compress());
}
// This sets global res.locals which are needed everywhere
// @TODO: figure out if this is really needed everywhere? Is it not frontend only...
parentApp.use(mw.ghostLocals);
// Mount the express apps on the parentApp
// ADMIN + API
const backendApp = require('./backend')();
parentApp.use(vhost(vhostUtils.getBackendHostArg(), backendApp));
// SITE + MEMBERS
const frontendApp = require('./frontend')(options);
parentApp.use(vhost(vhostUtils.getFrontendHostArg(), frontendApp));
debug('ParentApp setup end');
return parentApp;
};