Skip to content

Instantly share code, notes, and snippets.

@lijie2000
Forked from jamsesso/dev-server.js
Created October 27, 2017 02:30
Show Gist options
  • Save lijie2000/537f805b1d52fc2b47261c99d4a8a5e5 to your computer and use it in GitHub Desktop.
Save lijie2000/537f805b1d52fc2b47261c99d4a8a5e5 to your computer and use it in GitHub Desktop.
Webpack dev server with a better proxy (http-proxy-middleware)
var express = require('express');
var path = require('path');
var webpackConfig = require('./webpack.config');
var webpack = require('webpack');
var webpackDevMiddleware = require('webpack-dev-middleware');
var webpackHotMiddleware = require('webpack-hot-middleware');
var proxyMiddleware = require('http-proxy-middleware');
var devConfig = webpackConfig.devServer;
var app = express();
var compiler = webpack(webpackConfig);
app.use(express.static(devConfig.contentBase || __dirname));
app.use(webpackDevMiddleware(compiler, {}));
app.use(webpackHotMiddleware(compiler));
// Set up the proxy.
if(devConfig.proxy) {
Object.keys(devConfig.proxy).forEach(function(context) {
app.use(proxyMiddleware(context, devConfig.proxy[context]));
});
}
if(devConfig.historyApiFallback) {
console.log('404 responses will be forwarded to /index.html');
app.get('*', function(req, res) {
res.sendFile(path.resolve(devConfig.contentBase, 'index.html'));
});
}
app.listen(devConfig.port || 8080, function() {
console.log('Development server listening on port ' + devConfig.port);
});
var webpack = require('webpack');
module.exports = {
entry: [
...,
'webpack-hot-middleware/client?reload=true'
],
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin()
],
devServer: {
port: 8081,
contentBase: 'src/',
historyApiFallback: true,
proxy: {
'/api': {
target: 'http://localhost:8080',
pathRewrite: {
'^/api' : ''
}
}
}
},
...
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment