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,
|
||||
hasError: false,
|
||||
};
|
||||
|
||||
if (__DEV__) { // HMR
|
||||
Object.assign(modules[id].module, {
|
||||
hot: {
|
||||
acceptCallback: null,
|
||||
accept: function(callback) {
|
||||
this.acceptCallback = callback;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function require(id) {
|
||||
|
@ -82,4 +93,24 @@
|
|||
|
||||
global.__d = define;
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue