routes.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. 'use strict';
  2. const { createReadStream } = require('fs');
  3. const { join } = require('path');
  4. function routes(app, middleware, options) {
  5. app.get('/__webpack_dev_server__/live.bundle.js', (req, res) => {
  6. res.setHeader('Content-Type', 'application/javascript');
  7. createReadStream(
  8. join(__dirname, '..', '..', 'client', 'live.bundle.js')
  9. ).pipe(res);
  10. });
  11. app.get('/__webpack_dev_server__/sockjs.bundle.js', (req, res) => {
  12. res.setHeader('Content-Type', 'application/javascript');
  13. createReadStream(
  14. join(__dirname, '..', '..', 'client', 'sockjs.bundle.js')
  15. ).pipe(res);
  16. });
  17. app.get('/webpack-dev-server.js', (req, res) => {
  18. res.setHeader('Content-Type', 'application/javascript');
  19. createReadStream(
  20. join(__dirname, '..', '..', 'client', 'index.bundle.js')
  21. ).pipe(res);
  22. });
  23. app.get('/webpack-dev-server/*', (req, res) => {
  24. res.setHeader('Content-Type', 'text/html');
  25. createReadStream(join(__dirname, '..', '..', 'client', 'live.html')).pipe(
  26. res
  27. );
  28. });
  29. app.get('/webpack-dev-server', (req, res) => {
  30. res.setHeader('Content-Type', 'text/html');
  31. res.write(
  32. '<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body>'
  33. );
  34. const outputPath = middleware.getFilenameFromUrl(options.publicPath || '/');
  35. const filesystem = middleware.fileSystem;
  36. writeDirectory(options.publicPath || '/', outputPath);
  37. res.end('</body></html>');
  38. function writeDirectory(baseUrl, basePath) {
  39. const content = filesystem.readdirSync(basePath);
  40. res.write('<ul>');
  41. content.forEach((item) => {
  42. const p = `${basePath}/${item}`;
  43. if (filesystem.statSync(p).isFile()) {
  44. res.write('<li><a href="');
  45. res.write(baseUrl + item);
  46. res.write('">');
  47. res.write(item);
  48. res.write('</a></li>');
  49. if (/\.js$/.test(item)) {
  50. const html = item.substr(0, item.length - 3);
  51. res.write('<li><a href="');
  52. res.write(baseUrl + html);
  53. res.write('">');
  54. res.write(html);
  55. res.write('</a> (magic html for ');
  56. res.write(item);
  57. res.write(') (<a href="');
  58. res.write(
  59. baseUrl.replace(
  60. // eslint-disable-next-line
  61. /(^(https?:\/\/[^\/]+)?\/)/,
  62. '$1webpack-dev-server/'
  63. ) + html
  64. );
  65. res.write('">webpack-dev-server</a>)</li>');
  66. }
  67. } else {
  68. res.write('<li>');
  69. res.write(item);
  70. res.write('<br>');
  71. writeDirectory(`${baseUrl + item}/`, p);
  72. res.write('</li>');
  73. }
  74. });
  75. res.write('</ul>');
  76. }
  77. });
  78. }
  79. module.exports = routes;