UNPKG

1.33 kBJavaScriptView Raw
1/* eslint-disable no-param-reassign */
2
3import webpack from 'webpack';
4import express from 'express';
5import history from 'connect-history-api-fallback';
6import httpProxy from 'http-proxy';
7
8import { HOST_MAP } from './config/endpoint';
9
10import config from './webpack.config';
11
12const host = HOST_MAP[process.env.PROXY];
13
14const app = express();
15const compiler = webpack(config);
16
17app.use(history());
18
19app.use(
20 require('webpack-dev-middleware')(compiler, {
21 publicPath: config.output.publicPath,
22 stats: {
23 chunks: false,
24 colors: true,
25 },
26 }),
27);
28
29app.use(require('webpack-hot-middleware')(compiler));
30
31app.listen(3000, err => {
32 if (err) {
33 return console.error(err);
34 }
35
36 const proxyServer = httpProxy.createProxyServer({
37 target: host,
38 changeOrigin: true,
39 });
40
41 proxyServer.on('proxyReq', proxyReq => {
42 proxyReq.setHeader('Origin', host);
43 });
44
45 proxyServer.on('proxyRes', proxyRes => {
46 proxyRes.headers['Access-Control-Allow-Headers'] = 'content-type, authorization';
47 proxyRes.headers['Access-Control-Allow-Methods'] = 'PUT, POST, GET, DELETE';
48 proxyRes.headers['Access-Control-Allow-Origin'] = 'http://localhost:3000';
49 });
50
51 console.log(`Proxy ${process.env.PROXY} server ${host} start at localhost:9000`);
52
53 proxyServer.listen(9000);
54
55 return console.log('Listening at http://localhost:3000/');
56});