static-server.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. var serverUtils = require("./utils.js");
  2. var resolve = require("path").resolve;
  3. var utils = require("../utils.js");
  4. var serveStatic = require("./serve-static-wrapper").default();
  5. var serveIndex = require("serve-index");
  6. /**
  7. * @param {BrowserSync} bs
  8. * @returns {*}
  9. */
  10. module.exports = function createServer(bs) {
  11. var options = bs.options;
  12. var server = options.get("server");
  13. var basedirs = utils.arrayify(server.get("baseDir"));
  14. var serveStaticOptions = server.get("serveStaticOptions").toJS(); // passed to 3rd party
  15. var _serveStatic = 0;
  16. var _routes = 0;
  17. bs.options = bs.options
  18. /**
  19. * Add directory Middleware if given in server.directory
  20. */
  21. .update("middleware", function (mw) {
  22. if (!server.get("directory")) {
  23. return mw;
  24. }
  25. return mw.concat({
  26. route: "",
  27. handle: serveIndex(resolve(basedirs[0]), {
  28. icons: true,
  29. view: "details"
  30. }),
  31. id: "Browsersync Server Directory Middleware"
  32. });
  33. })
  34. /**
  35. * Add middleware for server.baseDir Option
  36. */
  37. .update("middleware", function (mw) {
  38. return mw.concat(basedirs.map(function (root) {
  39. return {
  40. route: "",
  41. id: "Browsersync Server ServeStatic Middleware - " +
  42. _serveStatic++,
  43. handle: serveStatic(resolve(root), serveStaticOptions)
  44. };
  45. }));
  46. })
  47. /**
  48. * Add middleware for server.routes
  49. */
  50. .update("middleware", function (mw) {
  51. if (!server.get("routes")) {
  52. return mw;
  53. }
  54. return mw.concat(server.get("routes").map(function (root, urlPath) {
  55. // strip trailing slash
  56. if (urlPath[urlPath.length - 1] === "/") {
  57. urlPath = urlPath.slice(0, -1);
  58. }
  59. return {
  60. route: urlPath,
  61. id: "Browsersync Server Routes Middleware - " +
  62. _routes++,
  63. handle: serveStatic(resolve(root))
  64. };
  65. }));
  66. });
  67. var app = serverUtils.getBaseApp(bs);
  68. /**
  69. * Finally, return the server + App
  70. */
  71. return serverUtils.getServer(app, bs.options);
  72. };
  73. //# sourceMappingURL=static-server.js.map