support production mode for client build and server
Change-Id: I483f614180505ba3783b4b1e5a7387ce93e2712a
diff --git a/app.js b/app.js
index 0e7bf8d..246b962 100644
--- a/app.js
+++ b/app.js
@@ -1,4 +1,4 @@
-const env = require('dotenv/config')
+require('dotenv').config()
const express = require('express')
const http = require('http')
@@ -20,18 +20,23 @@
const JamiRestApi = require('./routes/jami')
const JamiDaemon = require('./JamiDaemon')
-const webpack = require('webpack')
-const webpackConfig = require('./client/webpack.config.js')
-const compiler = webpack(webpackConfig)
-
//const sessionStore = new RedisStore({ client: redis })
const sessionStore = new session.MemoryStore()
const app = express()
-app.use(require('webpack-dev-middleware')(compiler, {
- publicPath: webpackConfig.output.publicPath
-}));
-app.use(require('webpack-hot-middleware')(compiler));
+console.log(`Loading server for ${app.get('env')}`)
+const development = app.get('env') === 'development'
+
+if (development) {
+ const webpack = require('webpack')
+ const webpackConfig = require('./client/webpack.config.js')
+ const compiler = webpack(webpackConfig)
+ app.use(require('webpack-dev-middleware')(compiler, {
+ publicPath: webpackConfig.output.publicPath
+ }));
+ app.use(require('webpack-hot-middleware')(compiler));
+}
+
/*
Configuation for Passeport Js
*/
diff --git a/client/webpack.config.js b/client/webpack.config.js
index 841c7d5..eb5c8b9 100644
--- a/client/webpack.config.js
+++ b/client/webpack.config.js
@@ -1,18 +1,32 @@
+'use strict'
const path = require('path')
+require('dotenv').config({ path: path.resolve(__dirname, '..', '.env') })
const HtmlWebpackPlugin = require('html-webpack-plugin')
-const webpack = require('webpack')
+const mode = process.env.NODE_ENV || 'development'
+
+let entry = [path.resolve(__dirname, 'src', 'index.js')]
+let plugins = [new HtmlWebpackPlugin({
+ template: path.resolve(__dirname, 'src', 'index.ejs')
+})]
+let devtool = undefined
+
+if (mode === 'development') {
+ const webpack = require('webpack')
+ entry = ['react-hot-loader/patch', 'webpack-hot-middleware/client', ...entry]
+ plugins = [new webpack.HotModuleReplacementPlugin(), ...plugins]
+ devtool = 'inline-source-map'
+}
+console.log(`Webpack configured for ${mode}`)
module.exports = {
- entry: ['react-hot-loader/patch',
- 'webpack-hot-middleware/client',
- path.resolve(__dirname, 'src', 'index.js')],
+ entry,
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
publicPath: '/'
},
- devtool: 'inline-source-map',
- mode: 'development',
+ devtool,
+ mode,
module: {
rules: [
{
@@ -35,10 +49,5 @@
}
]
},
- plugins: [
- new webpack.HotModuleReplacementPlugin(),
- new HtmlWebpackPlugin({
- template: path.resolve(__dirname, 'src', 'index.ejs')
- })
- ]
+ plugins
}
\ No newline at end of file