Skip to content

Commit

Permalink
added support for multi-compiler configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
iMoses committed Nov 26, 2016
1 parent 4d8d106 commit 77b0a7b
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions middleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ var MemoryFileSystem = require("memory-fs");
var mime = require("mime");
var parseRange = require("range-parser");
var pathIsAbsolute = require("path-is-absolute");
var getFilenameFromUrl = require("./lib/GetFilenameFromUrl");
var _getFilenameFromUrl = require("./lib/GetFilenameFromUrl");
var pathJoin = require("./lib/PathJoin");

var HASH_REGEXP = /[0-9a-f]{10,}/;
Expand All @@ -33,6 +33,22 @@ var defaultReporter = function(reporterOptions) {
}
};

// support for multi-compiler configuration
// see: https://github.com/webpack/webpack-dev-server/issues/641
function getFilenameFromUrl(publicPath, compiler, url) {
var compilers = compiler && compiler.compilers;
if(Array.isArray(compilers)) {
var compilerPublicPath;
for(var i = 0; i < compilers.length; i++) {
compilerPublicPath = compiler.options && compiler.options.output && compiler.options.output.publicPath;
if(url.indexOf(compilerPublicPath) === 0) {
return _getFilenameFromUrl(compilerPublicPath, compiler.outputPath, url);
}
}
}
return _getFilenameFromUrl(publicPath, compiler.outputPath, url);
}

// constructor for the middleware
module.exports = function(compiler, options) {
if(!options) options = {};
Expand Down Expand Up @@ -202,7 +218,7 @@ module.exports = function(compiler, options) {
return goNext();
}

var filename = getFilenameFromUrl(options.publicPath, compiler.outputPath, req.url);
var filename = getFilenameFromUrl(options.publicPath, compiler, req.url);
if(filename === false) return goNext();

// in lazy mode, rebuild on bundle request
Expand Down Expand Up @@ -254,7 +270,7 @@ module.exports = function(compiler, options) {
}
}

webpackDevMiddleware.getFilenameFromUrl = getFilenameFromUrl.bind(this, options.publicPath, compiler.outputPath);
webpackDevMiddleware.getFilenameFromUrl = getFilenameFromUrl.bind(this, options.publicPath, compiler);

webpackDevMiddleware.waitUntilValid = function(callback) {
callback = callback || function() {};
Expand Down

0 comments on commit 77b0a7b

Please sign in to comment.