mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-09 07:12:40 +00:00
Serve compressed static files if available
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
|
const zlib = require('zlib');
|
||||||
const Proj = require('./project.json');
|
const Proj = require('./project.json');
|
||||||
|
|
||||||
const { pack, watchFile, livereload } = require('vitreum');
|
const { pack, watchFile, livereload } = require('vitreum');
|
||||||
@@ -14,10 +15,16 @@ const transforms = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const build = async ({ bundle, render, ssr })=>{
|
const build = async ({ bundle, render, ssr })=>{
|
||||||
await fs.outputFile('./build/homebrew/bundle.css', await lessTransform.generate({ paths: './shared' }));
|
const css = await lessTransform.generate({ paths: './shared' });
|
||||||
|
await fs.outputFile('./build/homebrew/bundle.css', css);
|
||||||
await fs.outputFile('./build/homebrew/bundle.js', bundle);
|
await fs.outputFile('./build/homebrew/bundle.js', bundle);
|
||||||
await fs.outputFile('./build/homebrew/ssr.js', ssr);
|
await fs.outputFile('./build/homebrew/ssr.js', ssr);
|
||||||
await fs.outputFile('./build/homebrew/render.js', render);
|
await fs.outputFile('./build/homebrew/render.js', render);
|
||||||
|
|
||||||
|
//compress files
|
||||||
|
await fs.outputFile('./build/homebrew/bundle.css.br', zlib.brotliCompressSync(css));
|
||||||
|
await fs.outputFile('./build/homebrew/bundle.js.br', zlib.brotliCompressSync(bundle));
|
||||||
|
await fs.outputFile('./build/homebrew/ssr.js.br', zlib.brotliCompressSync(ssr));
|
||||||
};
|
};
|
||||||
|
|
||||||
fs.emptyDirSync('./build/homebrew');
|
fs.emptyDirSync('./build/homebrew');
|
||||||
|
|||||||
19
server.js
19
server.js
@@ -1,11 +1,30 @@
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const jwt = require('jwt-simple');
|
const jwt = require('jwt-simple');
|
||||||
|
const fs = require('fs-extra');
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
const homebrewApi = require('./server/homebrew.api.js');
|
const homebrewApi = require('./server/homebrew.api.js');
|
||||||
const GoogleActions = require('./server/googleActions.js');
|
const GoogleActions = require('./server/googleActions.js');
|
||||||
|
|
||||||
|
// Serve brotli-compressed static files if available
|
||||||
|
app.get('*.js', function(req, res, next) {
|
||||||
|
if(fs.existsSync('build' + req.url + '.br')){
|
||||||
|
req.url = req.url + '.br';
|
||||||
|
res.set('Content-Encoding', 'br');
|
||||||
|
res.set('Content-Type', 'text/javascript');
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
app.get('*.css', function(req, res, next) {
|
||||||
|
if(fs.existsSync('build' + req.url + '.br')){
|
||||||
|
req.url = req.url + '.br';
|
||||||
|
res.set('Content-Encoding', 'br');
|
||||||
|
res.set('Content-Type', 'text/javascript');
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
|
||||||
app.use(express.static(`${__dirname}/build`));
|
app.use(express.static(`${__dirname}/build`));
|
||||||
app.use(require('body-parser').json({ limit: '25mb' }));
|
app.use(require('body-parser').json({ limit: '25mb' }));
|
||||||
app.use(require('cookie-parser')());
|
app.use(require('cookie-parser')());
|
||||||
|
|||||||
Reference in New Issue
Block a user