connect.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /**
  2. * Copyright © Magento, Inc. All rights reserved.
  3. * See COPYING.txt for license details.
  4. */
  5. 'use strict';
  6. var tasks = {};
  7. function init(config) {
  8. var serveStatic = require('serve-static'),
  9. grunt = require('grunt'),
  10. _ = require('underscore'),
  11. path = require('path'),
  12. ignoredPaths, middleware, themes, files, port;
  13. port = config.port;
  14. files = config.files;
  15. themes = config.themes;
  16. ignoredPaths = config.server.serveAsIs;
  17. function serveAsIs(path) {
  18. return ignoredPaths.some(function (ignoredPath) {
  19. return new RegExp(ignoredPath).test(path);
  20. });
  21. }
  22. middleware = function (connect, options, middlewares) {
  23. var server = serveStatic(process.cwd());
  24. middlewares.unshift(function (req, res, next) {
  25. var url = req.url;
  26. if (serveAsIs(url)) {
  27. return server.apply(null, arguments);
  28. }
  29. return next();
  30. });
  31. return middlewares;
  32. }
  33. _.each(themes, function (themeData, themeName) {
  34. var options = {
  35. base: _.template(config.server.base)(themeData),
  36. port: port++,
  37. middleware: middleware
  38. };
  39. _.defaults(options, config.server.options);
  40. tasks[themeName] = { options: options };
  41. });
  42. }
  43. function getTasks() {
  44. return tasks;
  45. }
  46. module.exports = {
  47. init: init,
  48. getTasks: getTasks
  49. };