addDevMiddlewares.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. const path = require('path')
  2. const webpack = require('webpack')
  3. const webpackDevMiddleware = require('webpack-dev-middleware')
  4. const webpackHotMiddleware = require('webpack-hot-middleware')
  5. const proxy = require('http-proxy-middleware')
  6. const fs = require('fs')
  7. function createWebpackMiddleware(compiler, publicPath) {
  8. return webpackDevMiddleware(compiler, {
  9. logLevel: 'warn',
  10. publicPath,
  11. silent: true,
  12. stats: 'errors-only'
  13. })
  14. }
  15. module.exports = function addDevMiddlewares(app, webpackConfig) {
  16. const compiler = webpack(webpackConfig)
  17. const middleware = createWebpackMiddleware(
  18. compiler,
  19. webpackConfig.output.publicPath
  20. )
  21. // let proxyTarget = 'http://davinci.xt.wenhq.top:8083/'
  22. let proxyTarget = 'http://thgateway.xt.wenhq.top:8083/taihu-analysis/'
  23. const configFilePath = path.resolve(__dirname, '../config.json')
  24. if (fs.existsSync(configFilePath)) {
  25. const jsonConfig = fs.readFileSync(configFilePath)
  26. const { proxies } = JSON.parse(jsonConfig)
  27. proxyTarget = proxies.find((proxy) => proxy.enabled).target
  28. }
  29. app.use(
  30. ['/api/v3', '/image'],
  31. proxy({ target: proxyTarget, changeOrigin: true })
  32. )
  33. app.use(
  34. ['/taihu-auth'],
  35. proxy({ target: 'http://thgateway.xt.wenhq.top:8083/', changeOrigin: true })
  36. )
  37. app.use(middleware)
  38. app.use(webpackHotMiddleware(compiler))
  39. // Since webpackDevMiddleware uses memory-fs internally to store build
  40. // artifacts, we use it instead
  41. const fsMemory = middleware.fileSystem
  42. app.get('*', (req, res) => {
  43. fsMemory.readFile(
  44. path.join(compiler.outputPath, 'index.html'),
  45. (err, file) => {
  46. if (err) {
  47. res.sendStatus(404)
  48. } else {
  49. res.send(file.toString())
  50. }
  51. }
  52. )
  53. })
  54. }