65 lines
1.5 KiB
JavaScript
Executable File
65 lines
1.5 KiB
JavaScript
Executable File
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
var tasks = {};
|
|
|
|
function init(config) {
|
|
var serveStatic = require('serve-static'),
|
|
grunt = require('grunt'),
|
|
_ = require('underscore'),
|
|
path = require('path'),
|
|
ignoredPaths, middleware, themes, files, port;
|
|
|
|
port = config.port;
|
|
files = config.files;
|
|
themes = config.themes;
|
|
ignoredPaths = config.server.serveAsIs;
|
|
|
|
function serveAsIs(path) {
|
|
return ignoredPaths.some(function (ignoredPath) {
|
|
return new RegExp(ignoredPath).test(path);
|
|
});
|
|
}
|
|
|
|
middleware = function (connect, options, middlewares) {
|
|
var server = serveStatic(process.cwd());
|
|
|
|
middlewares.unshift(function (req, res, next) {
|
|
var url = req.url;
|
|
|
|
if (serveAsIs(url)) {
|
|
return server.apply(null, arguments);
|
|
}
|
|
|
|
return next();
|
|
});
|
|
|
|
return middlewares;
|
|
};
|
|
|
|
_.each(themes, function (themeData, themeName) {
|
|
var options = {
|
|
base: _.template(config.server.base)(themeData),
|
|
port: port++,
|
|
middleware: middleware
|
|
};
|
|
|
|
_.defaults(options, config.server.options);
|
|
|
|
tasks[themeName] = { options: options };
|
|
});
|
|
}
|
|
|
|
function getTasks() {
|
|
return tasks;
|
|
}
|
|
|
|
module.exports = {
|
|
init: init,
|
|
getTasks: getTasks
|
|
};
|