mirror of
https://github.com/wassname/talk.git
synced 2026-06-27 23:24:04 +08:00
22d263c6d2
* feat: refactored bridge - Cleaned up implementation of bridge - Removed unneeded babel-polyfill and webpack globals * fix: fixed up some static headers - bumped version * fix: moved intersection observer out of chunk * fix: fixed misplaced "!"
45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
const express = require('express');
|
|
const path = require('path');
|
|
const staticServer = require('express-static-gzip');
|
|
const { merge } = require('lodash');
|
|
const { EMBED_EXPIRY_TIME, STATIC_EXPIRY_TIME } = require('../config');
|
|
|
|
// EMBED_CACHE_CONTROL_HEADER is the header sent when the file is embed.js.
|
|
const EMBED_CACHE_CONTROL_HEADER = [
|
|
'public',
|
|
`max-age=${Math.floor(EMBED_EXPIRY_TIME / 1000)}`,
|
|
'immutable',
|
|
].join(', ');
|
|
|
|
// Define the options to be applied to all static files, the embed itself has a
|
|
// separate override.
|
|
const defaultOpts = {
|
|
maxAge: STATIC_EXPIRY_TIME,
|
|
immutable: true,
|
|
setHeaders: (res, path) => {
|
|
if (path.includes('/dist/embed.js')) {
|
|
// embed.js has a different max-age then the rest of the static files.
|
|
res.setHeader('Cache-Control', EMBED_CACHE_CONTROL_HEADER);
|
|
}
|
|
},
|
|
};
|
|
|
|
// Setup the configuration for the compression options on how to serve files.
|
|
const compressionOpts = {
|
|
indexFromEmptyFile: false,
|
|
enableBrotli: true,
|
|
customCompressions: [{ encodingName: 'deflate', fileExtension: 'zz' }],
|
|
};
|
|
|
|
// Serve the directories under ../dist.
|
|
const dist = path.resolve(path.join(__dirname, '../dist'));
|
|
|
|
/**
|
|
* middleware in production will serve compressed files if available, otherwise
|
|
* it will use express's static middleware.
|
|
*/
|
|
module.exports =
|
|
process.env.NODE_ENV === 'production'
|
|
? staticServer(dist, merge(compressionOpts, defaultOpts))
|
|
: express.static(dist, defaultOpts);
|