summaryrefslogtreecommitdiffstats
path: root/front/odiparpack/server/middlewares
diff options
context:
space:
mode:
authorDayana31 <[email protected]>2022-04-21 17:27:08 -0500
committerDayana31 <[email protected]>2022-04-21 17:27:08 -0500
commit67c50667678dd0ce4709b29a854f6a47093a1ac5 (patch)
treeb6f9f39092ad54bf6b815984d32b37d7c7ca67ab /front/odiparpack/server/middlewares
parent91140b24f0d49a9f89a080ee063e9eb023a4b73a (diff)
parente13e630cd6e4fc0b1ff92098a28a770794c7bb9a (diff)
downloadDP1_project-67c50667678dd0ce4709b29a854f6a47093a1ac5.tar.gz
DP1_project-67c50667678dd0ce4709b29a854f6a47093a1ac5.tar.bz2
DP1_project-67c50667678dd0ce4709b29a854f6a47093a1ac5.zip
Merge branch 'gabshr' into dayana
Diffstat (limited to 'front/odiparpack/server/middlewares')
-rw-r--r--front/odiparpack/server/middlewares/addDevMiddlewares.js38
-rw-r--r--front/odiparpack/server/middlewares/addProdMiddlewares.js18
-rw-r--r--front/odiparpack/server/middlewares/frontendMiddleware.js19
3 files changed, 75 insertions, 0 deletions
diff --git a/front/odiparpack/server/middlewares/addDevMiddlewares.js b/front/odiparpack/server/middlewares/addDevMiddlewares.js
new file mode 100644
index 0000000..495b4a2
--- /dev/null
+++ b/front/odiparpack/server/middlewares/addDevMiddlewares.js
@@ -0,0 +1,38 @@
+const path = require('path');
+const webpack = require('webpack');
+const webpackDevMiddleware = require('webpack-dev-middleware');
+const webpackHotMiddleware = require('webpack-hot-middleware');
+
+function createWebpackMiddleware(compiler, publicPath) {
+ return webpackDevMiddleware(compiler, {
+ logLevel: 'warn',
+ publicPath,
+ silent: true,
+ stats: 'errors-only',
+ });
+}
+
+module.exports = function addDevMiddlewares(app, webpackConfig) {
+ const compiler = webpack(webpackConfig);
+ const middleware = createWebpackMiddleware(
+ compiler,
+ webpackConfig.output.publicPath,
+ );
+
+ app.use(middleware);
+ app.use(webpackHotMiddleware(compiler));
+
+ // Since webpackDevMiddleware uses memory-fs internally to store build
+ // artifacts, we use it instead
+ const fs = middleware.fileSystem;
+
+ app.get('*', (req, res) => {
+ fs.readFile(path.join(compiler.outputPath, 'index.html'), (err, file) => {
+ if (err) {
+ res.sendStatus(404);
+ } else {
+ res.send(file.toString());
+ }
+ });
+ });
+};
diff --git a/front/odiparpack/server/middlewares/addProdMiddlewares.js b/front/odiparpack/server/middlewares/addProdMiddlewares.js
new file mode 100644
index 0000000..0a5bca5
--- /dev/null
+++ b/front/odiparpack/server/middlewares/addProdMiddlewares.js
@@ -0,0 +1,18 @@
+const path = require('path');
+const express = require('express');
+const compression = require('compression');
+
+module.exports = function addProdMiddlewares(app, options) {
+ const publicPath = options.publicPath || '/';
+ const outputPath = options.outputPath || path.resolve(process.cwd(), 'build');
+
+ // compression middleware compresses your server responses which makes them
+ // smaller (applies also to assets). You can read more about that technique
+ // and other good practices on official Express.js docs http://mxs.is/googmy
+ app.use(compression());
+ app.use(publicPath, express.static(outputPath));
+
+ app.get('*', (req, res) =>
+ res.sendFile(path.resolve(outputPath, 'index.html')),
+ );
+};
diff --git a/front/odiparpack/server/middlewares/frontendMiddleware.js b/front/odiparpack/server/middlewares/frontendMiddleware.js
new file mode 100644
index 0000000..4d01858
--- /dev/null
+++ b/front/odiparpack/server/middlewares/frontendMiddleware.js
@@ -0,0 +1,19 @@
+/* eslint-disable global-require */
+
+/**
+ * Front-end middleware
+ */
+module.exports = (app, options) => {
+ const isProd = process.env.NODE_ENV === 'production';
+
+ if (isProd) {
+ const addProdMiddlewares = require('./addProdMiddlewares');
+ addProdMiddlewares(app, options);
+ } else {
+ const webpackConfig = require('../../internals/webpack/webpack.dev.babel');
+ const addDevMiddlewares = require('./addDevMiddlewares');
+ addDevMiddlewares(app, webpackConfig);
+ }
+
+ return app;
+};