mirror of https://github.com/webpack/webpack.git
Merge pull request #4617 from ricmatsui/rm-fix-hot-module-replacement
Fix hot module main flag for hot module replacement
This commit is contained in:
commit
c1ce93a1a9
|
|
@ -8,7 +8,7 @@ module.exports = function() {
|
|||
var hotApplyOnUpdate = true;
|
||||
var hotCurrentHash = $hash$; // eslint-disable-line no-unused-vars
|
||||
var hotCurrentModuleData = {};
|
||||
var hotMainModule = true; // eslint-disable-line no-unused-vars
|
||||
var hotCurrentChildModule; // eslint-disable-line no-unused-vars
|
||||
var hotCurrentParents = []; // eslint-disable-line no-unused-vars
|
||||
var hotCurrentParentsTemp = []; // eslint-disable-line no-unused-vars
|
||||
|
||||
|
|
@ -20,14 +20,16 @@ module.exports = function() {
|
|||
if(installedModules[request]) {
|
||||
if(installedModules[request].parents.indexOf(moduleId) < 0)
|
||||
installedModules[request].parents.push(moduleId);
|
||||
} else hotCurrentParents = [moduleId];
|
||||
} else {
|
||||
hotCurrentParents = [moduleId];
|
||||
hotCurrentChildModule = request;
|
||||
}
|
||||
if(me.children.indexOf(request) < 0)
|
||||
me.children.push(request);
|
||||
} else {
|
||||
console.warn("[HMR] unexpected require(" + request + ") from disposed module " + moduleId);
|
||||
hotCurrentParents = [];
|
||||
}
|
||||
hotMainModule = false;
|
||||
return $require$(request);
|
||||
};
|
||||
var ObjectFactory = function ObjectFactory(name) {
|
||||
|
|
@ -82,7 +84,7 @@ module.exports = function() {
|
|||
_selfAccepted: false,
|
||||
_selfDeclined: false,
|
||||
_disposeHandlers: [],
|
||||
_main: hotMainModule,
|
||||
_main: hotCurrentChildModule !== moduleId,
|
||||
|
||||
// Module API
|
||||
active: true,
|
||||
|
|
@ -135,7 +137,7 @@ module.exports = function() {
|
|||
//inherit from previous dispose call
|
||||
data: hotCurrentModuleData[moduleId]
|
||||
};
|
||||
hotMainModule = true;
|
||||
hotCurrentChildModule = undefined;
|
||||
return hot;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
module.exports = "common";
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
require("should");
|
||||
|
||||
require("./common");
|
||||
|
||||
it("should have the correct main flag for multi first module", function() {
|
||||
var multiModule = __webpack_require__.c[module.parents[0]];
|
||||
multiModule.hot._main.should.be.eql(true);
|
||||
});
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
require("should");
|
||||
|
||||
require("./common");
|
||||
|
||||
it("should have the correct main flag for multi second module", function() {
|
||||
var multiModule = __webpack_require__.c[module.parents[0]];
|
||||
multiModule.hot._main.should.be.eql(true);
|
||||
});
|
||||
|
|
@ -0,0 +1 @@
|
|||
module.exports = "shared";
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
module.exports = {
|
||||
findBundle: function(i, options) {
|
||||
return [
|
||||
"./vendor.js",
|
||||
"./first.js",
|
||||
"./second.js"
|
||||
]
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
require("./common");
|
||||
|
||||
module.exports = "vendor";
|
||||
|
||||
it("should have the correct main flag for multi vendor module", function() {
|
||||
var multiModule = __webpack_require__.c[module.parents[0]];
|
||||
multiModule.hot._main.should.be.eql(true);
|
||||
});
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
var CommonsChunkPlugin = require("../../../../lib/optimize/CommonsChunkPlugin");
|
||||
var HotModuleReplacementPlugin = require("../../../../lib/HotModuleReplacementPlugin");
|
||||
module.exports = {
|
||||
entry: {
|
||||
vendor: ["./vendor"],
|
||||
first: ["./shared", "./first"],
|
||||
second: ["./shared", "./second"]
|
||||
},
|
||||
target: "web",
|
||||
output: {
|
||||
filename: "[name].js"
|
||||
},
|
||||
plugins: [
|
||||
new CommonsChunkPlugin({
|
||||
name: "vendor"
|
||||
}),
|
||||
new HotModuleReplacementPlugin()
|
||||
]
|
||||
};
|
||||
Loading…
Reference in New Issue