UNPKG

eunomia-controller

Version:

63 lines (55 loc) 1.97 kB
'use strict'; var express = require('express'); var path = require('path'); var compression = require('compression'); var pkg = require(path.resolve(process.cwd(), 'package.json')); var addDevMiddlewares = function addDevMiddlewares(app, webpackConfig) { var webpack = require('webpack'); var webpackDevMiddleware = require('webpack-dev-middleware'); var webpackHotMiddleware = require('webpack-hot-middleware'); var compiler = webpack(webpackConfig); var middleware = webpackDevMiddleware(compiler, { noInfo: true, publicPath: webpackConfig.output.publicPath, silent: true, stats: 'errors-only' }); app.use(middleware); app.use(webpackHotMiddleware(compiler)); var fs = middleware.fileSystem; if (pkg.dllPlugin) { app.get(/\.dll\.js$/, function (req, res) { var filename = req.path.replace(/^\//, ''); res.sendFile(path.join(process.cwd(), pkg.dllPlugin.path, filename)); }); } app.get('*', function (req, res) { fs.readFile(path.join(compiler.outputPath, 'index.html'), function (err, file) { if (err) { res.sendStatus(404); } else { res.send(file.toString()); } }); }); }; var addProdMiddlewares = function addProdMiddlewares(app, options) { var publicPath = options.publicPath || '/'; var outputPath = options.outputPath || path.resolve(process.cwd(), 'build'); app.use(compression()); app.use(publicPath, express.static(outputPath)); app.get('*', function (req, res) { return res.sendFile(path.resolve(outputPath, 'index.html')); }); }; module.exports = function (app, options) { var isProd = process.env.NODE_ENV === 'production'; if (isProd) { addProdMiddlewares(app, options); } else { console.log(path.resolve(process.cwd(), 'tools/webpack/webpack.dev.babel')); var webpackConfig = require(path.resolve(process.cwd(), 'tools/webpack/webpack.dev.babel')); addDevMiddlewares(app, webpackConfig); } return app; };