mirror of https://github.com/status-im/metro.git
Make Packager send fresh modules through HMR interface
Reviewed By: frantic Differential Revision: D2787951 fb-gh-sync-id: 63c04710b60d99b5161ef9a40b116ba2f72df745
This commit is contained in:
parent
e6a807a8b7
commit
afba6b48e7
|
@ -277,6 +277,29 @@ class Bundler {
|
|||
});
|
||||
}
|
||||
|
||||
bundleForHMR({
|
||||
entryFile,
|
||||
platform,
|
||||
}) {
|
||||
return this.getDependencies(entryFile, /*isDev*/true, platform).then(response => {
|
||||
const module = response.dependencies.filter(module => module.path === entryFile)[0];
|
||||
|
||||
return Promise.all([
|
||||
module.getName(),
|
||||
this._transformer.loadFileAndTransform(path.resolve(entryFile)),
|
||||
]).then(([moduleName, transformedSource]) => {
|
||||
return (`
|
||||
__accept(
|
||||
'${moduleName}',
|
||||
function(global, require, module, exports) {
|
||||
${transformedSource.code}
|
||||
}
|
||||
);
|
||||
`);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
invalidateFile(filePath) {
|
||||
this._transformer.invalidateFile(filePath);
|
||||
}
|
||||
|
|
|
@ -112,6 +112,17 @@ const bundleOpts = declareOpts({
|
|||
}
|
||||
});
|
||||
|
||||
const hmrBundleOpts = declareOpts({
|
||||
entryFile: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
},
|
||||
platform: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
},
|
||||
});
|
||||
|
||||
const dependencyOpts = declareOpts({
|
||||
platform: {
|
||||
type: 'string',
|
||||
|
@ -220,6 +231,17 @@ class Server {
|
|||
return this.buildBundle(options);
|
||||
}
|
||||
|
||||
buildBundleForHMR(options) {
|
||||
return Promise.resolve().then(() => {
|
||||
if (!options.platform) {
|
||||
options.platform = getPlatformExtension(options.entryFile);
|
||||
}
|
||||
|
||||
const opts = hmrBundleOpts(options);
|
||||
return this._bundler.bundleForHMR(opts);
|
||||
});
|
||||
}
|
||||
|
||||
getDependencies(options) {
|
||||
return Promise.resolve().then(() => {
|
||||
if (!options.platform) {
|
||||
|
|
Loading…
Reference in New Issue