UNPKG

@25sprout/react-starter

Version:

25sprout web starter with React

58 lines (42 loc) 1.44 kB
/* eslint-disable no-param-reassign */ import webpack from 'webpack'; import express from 'express'; import history from 'connect-history-api-fallback'; import httpProxy from 'http-proxy'; import { API_ENDPOINT, SELF_HOST_ENDPOINT } from './config/endpoint'; import config from './webpack.config'; // Target API endpoint const host = process.env.API_ENDPOINT; const app = express(); const compiler = webpack(config); app.use(history()); app.use( require('webpack-dev-middleware')(compiler, { publicPath: config.output.publicPath, stats: { chunks: false, colors: true, }, }), ); app.use(require('webpack-hot-middleware')(compiler)); app.listen(process.env.SELF_HOST_ENDPOINT_DEV_PORT, err => { if (err) { return console.error(err); } const proxyServer = httpProxy.createProxyServer({ target: host, changeOrigin: true, }); proxyServer.on('proxyReq', proxyReq => { proxyReq.setHeader('Origin', host); }); proxyServer.on('proxyRes', proxyRes => { proxyRes.headers['Access-Control-Allow-Headers'] = 'content-type, authorization'; proxyRes.headers['Access-Control-Allow-Methods'] = 'PUT, POST, GET, DELETE'; proxyRes.headers['Access-Control-Allow-Origin'] = SELF_HOST_ENDPOINT; }); console.log(`Proxy ${process.env.PROXY} server ${host} start at ${API_ENDPOINT}`); proxyServer.listen(process.env.API_ENDPOINT_DEV_PORT); return console.log(`Listening at ${process.env.SELF_HOST_ENDPOINT}/`); });