freeCodeCamp/server/middlewares/revision-helpers.js

32 lines
1022 B
JavaScript

import manifest from '../rev-manifest.json';
const __DEV__ = process.env.NODE_ENV === 'development';
const manifestPath = '../rev-manifest.json';
export default function({ globalPrepend = '' } = {}) {
function rev(manifest, scopedPrepend, asset) {
return `${globalPrepend}${scopedPrepend}/${ manifest[asset] || asset }`;
}
const boundRev = rev.bind(null, manifest);
return function(req, res, next) {
// in dev environment, we reread the manifest on every call
// this means we do not need to restart server on every change to
// client code
if (__DEV__) {
// we first need to remove the manifest from require cache
delete require.cache[require.resolve(manifestPath)];
// and re-require
const manifest = require(manifestPath);
res.locals.rev = rev.bind(null, manifest);
return next();
}
// in production we take use the initially loaded manifest
// since this should not change in production
res.locals.rev = boundRev;
next();
};
}