1 | const Express = require('express')
|
2 | const compression = require('compression')
|
3 |
|
4 | const { IS_DEV, IS_PROD } = require('../config/env.config')
|
5 | const appConfig = require('../utils/get-app-config')
|
6 | const { publicPath } = require('../utils/index')
|
7 |
|
8 | const proxyMiddleware = require('./middlewares/proxy')
|
9 | const ssrMiddleware = require('./middlewares/ssr')
|
10 |
|
11 | module.exports = function createApp(options, onStart = () => {}) {
|
12 | const app = Express()
|
13 |
|
14 | if (appConfig.deploy.CORS) {
|
15 | app.all('*', function(req, res, next) {
|
16 | res.header('Access-Control-Allow-Origin', '*')
|
17 | res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS')
|
18 | res.header('Access-Control-Allow-Headers', 'X-Requested-With')
|
19 | res.header('Access-Control-Allow-Headers', 'Content-Type')
|
20 | next()
|
21 | })
|
22 | }
|
23 |
|
24 |
|
25 | app.use(require('connect-history-api-fallback')())
|
26 |
|
27 | app.use(compression())
|
28 |
|
29 |
|
30 | if (!appConfig.deploy.isSSR) {
|
31 | app.use(Express.static(publicPath))
|
32 | }
|
33 | app.use(`/${publicPath}`, Express.static(publicPath))
|
34 |
|
35 | if (IS_DEV) {
|
36 | const webpackDevMiddleware = require('./middlewares/webpack.dev')
|
37 | webpackDevMiddleware(app)
|
38 | }
|
39 |
|
40 | if (IS_PROD && appConfig.deploy.isSSR) {
|
41 | app.use(ssrMiddleware)
|
42 | }
|
43 |
|
44 |
|
45 | app.use(proxyMiddleware)
|
46 |
|
47 | app.listen(appConfig.appPort, function () {
|
48 | console.log(`server is running in http://localhost:${appConfig.appPort}`)
|
49 | })
|
50 |
|
51 |
|
52 | onStart()
|
53 |
|
54 | return app
|
55 | }
|