mirror of https://github.com/status-im/metro.git
Introduce HMR runtime
Summary: public Add a very simple runtime for self-accepting modules. The API is the same one as Webpacks's one for now. The new infra will be end-to-end tested on a follow up diff. Reviewed By: vjeux Differential Revision: D2789428 fb-gh-sync-id: c39524814d53c6e4ec9d9d011081ea81089b00b6
This commit is contained in:
parent
afba6b48e7
commit
5bbd33051a
|
@ -10,6 +10,17 @@
|
||||||
isInitialized: false,
|
isInitialized: false,
|
||||||
hasError: false,
|
hasError: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (__DEV__) { // HMR
|
||||||
|
Object.assign(modules[id].module, {
|
||||||
|
hot: {
|
||||||
|
acceptCallback: null,
|
||||||
|
accept: function(callback) {
|
||||||
|
this.acceptCallback = callback;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function require(id) {
|
function require(id) {
|
||||||
|
@ -82,4 +93,24 @@
|
||||||
|
|
||||||
global.__d = define;
|
global.__d = define;
|
||||||
global.require = require;
|
global.require = require;
|
||||||
|
|
||||||
|
if (__DEV__) { // HMR
|
||||||
|
function accept(id, factory) {
|
||||||
|
var mod = modules[id];
|
||||||
|
if (mod.module.hot.acceptCallback) {
|
||||||
|
mod.factory = factory;
|
||||||
|
mod.isInitialized = false;
|
||||||
|
require(id);
|
||||||
|
|
||||||
|
mod.hot.acceptCallback();
|
||||||
|
} else {
|
||||||
|
console.log(
|
||||||
|
'[HMR] Module `' + id + '` cannot be accepted. ' +
|
||||||
|
'Please reload bundle to get the updates.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
global.__accept = accept;
|
||||||
|
}
|
||||||
})(this);
|
})(this);
|
||||||
|
|
Loading…
Reference in New Issue