@bbc/spartacus
Version:
51 lines (42 loc) • 1.29 kB
JSX
import express from 'express';
import compression from 'compression';
import expressStaticGzip from 'express-static-gzip';
// not part of react-helmet
import helmet from 'helmet';
import gnuTP from 'gnu-terry-pratchett';
import nodeLogger from '../utilities/loggers/logger.node';
// require instead of import because the relative imports need to run first
const morgan = require('morgan');
const logger = nodeLogger(`spartacus:${__filename}`);
const publicDirectory = 'build/public';
logger.debug(
`Application outputting logs to directory "${process.env.LOG_DIR}"`,
);
/* eslint class-methods-use-this: ["error", { "exceptMethods": ["write"] }] */
class LoggerStream {
write(message) {
logger.info(message.substring(0, message.lastIndexOf('\n')));
}
}
const server = () => express();
const expressServer = server()
.disable('x-powered-by')
.use(
morgan('tiny', {
skip: (req, res) => res.statusCode === 200,
stream: new LoggerStream(),
}),
)
.use(compression())
.use(helmet({ frameguard: { action: 'deny' } }))
.use(
expressStaticGzip(publicDirectory, {
enableBrotli: true,
orderPreference: ['br'],
}),
)
.use(gnuTP())
.get('/status', (req, res) => {
res.sendStatus(200);
});
export default expressServer;