From b675e51126318fa47621421505c0b8b040c2b6a2 Mon Sep 17 00:00:00 2001 From: esikkala <esko.ikkala@aalto.fi> Date: Thu, 20 May 2021 16:43:48 +0300 Subject: [PATCH] Gzip main js file and serve it with express-static-gzip --- package-lock.json | 40 ++++++++++++++++++++++++++++++++++++++++ package.json | 2 ++ src/server/index.js | 4 +++- webpack.client.prod.js | 4 ++++ 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index e634ee3c..b3588441 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8503,6 +8503,38 @@ } } }, + "compression-webpack-plugin": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-7.1.2.tgz", + "integrity": "sha512-9DKNW6ILLjx+bNBoviHDgLx6swBhWWH9ApClC9sTH2NoFfQM47BapQfovCm9zjD9v1uZwInF5a925FB9ErGQeQ==", + "dev": true, + "requires": { + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1" + }, + "dependencies": { + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + } + } + }, "compute-scroll-into-view": { "version": "1.0.17", "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", @@ -11357,6 +11389,14 @@ } } }, + "express-static-gzip": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.1.1.tgz", + "integrity": "sha512-J+xSzdr5lj1cIuZey0ac6nUv22VE7GrdwTERqE8DsrqSXLm1zjeYWTVbK37t8exGwobxBXeWU2bM7eSMjBR4YA==", + "requires": { + "serve-static": "^1.14.1" + } + }, "expression-eval": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/expression-eval/-/expression-eval-2.1.0.tgz", diff --git a/package.json b/package.json index f8aaa0c0..66cdc9ee 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "dotenv": "^8.2.0", "express": "^4.16.4", "express-openapi-validator": "^3.12.7", + "express-static-gzip": "^2.1.1", "flat": "^5.0.2", "googleapis": "^71.0.0", "immutable": "^4.0.0-rc.12", @@ -98,6 +99,7 @@ "babel-jest": "^25.1.0", "babel-loader": "^8.2.2", "clean-webpack-plugin": "^3.0.0", + "compression-webpack-plugin": "^7.1.2", "concurrently": "^5.3.0", "copy-webpack-plugin": "^7.0.0", "cross-env": "^7.0.0", diff --git a/src/server/index.js b/src/server/index.js index 57450331..f0eb4381 100644 --- a/src/server/index.js +++ b/src/server/index.js @@ -5,6 +5,7 @@ import path from 'path' import bodyParser from 'body-parser' import axios from 'axios' import { has, castArray } from 'lodash' +import expressStaticGzip from 'express-static-gzip' import { getResultCount, getPaginatedResults, @@ -45,7 +46,8 @@ let publicPath = null if (!isDevelopment) { // The root directory from which to serve static assets publicPath = path.join(__dirname, './../public/') - app.use(express.static(publicPath)) + // app.use(express.static(publicPath)) + app.use('/', expressStaticGzip(publicPath)) } // React app makes requests to these api urls diff --git a/webpack.client.prod.js b/webpack.client.prod.js index c6e5e909..b5533d68 100644 --- a/webpack.client.prod.js +++ b/webpack.client.prod.js @@ -1,6 +1,7 @@ const webpack = require('webpack') const { merge } = require('webpack-merge') const CopyPlugin = require('copy-webpack-plugin') +const CompressionPlugin = require('compression-webpack-plugin') const common = require('./webpack.client.common.js') module.exports = merge(common, { @@ -26,6 +27,9 @@ module.exports = merge(common, { to: `${common.output.path}` } ] + }), + new CompressionPlugin({ + test: /\.js(\?.*)?$/i }) ] }) -- GitLab