Skip to content

Commit 05cec82

Browse files
committed
[Packager] Support null modules
1 parent e1d1630 commit 05cec82

File tree

4 files changed

+51
-3
lines changed

4 files changed

+51
-3
lines changed

packager/react-packager/src/Bundler/index.js

+13
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,19 @@ class Bundler {
181181
}
182182

183183
_transformModule(bundle, response, module, platform = null) {
184+
185+
if (module.isNull) {
186+
return this._resolver
187+
.wrapModule(response, module)
188+
.then(function(code) {
189+
return new ModuleTransport({
190+
code: code,
191+
sourceCode: module.code,
192+
sourcePath: module.path,
193+
});
194+
});
195+
}
196+
184197
let transform;
185198

186199
if (module.isAsset_DEPRECATED()) {

packager/react-packager/src/DependencyResolver/DependencyGraph/ResolutionRequest.js

+26-2
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,16 @@ class ResolutionRequest {
5959
return Q(asset_DEPRECATED);
6060
}
6161

62-
return this._redirectRequire(fromModule, toModuleName)
62+
return Q.all([
63+
toModuleName,
64+
this._redirectRequire(fromModule, toModuleName)
65+
])
6366

64-
.then((toModuleName) => {
67+
.then(([oldModuleName, toModuleName]) => {
68+
69+
if (toModuleName === null) {
70+
return this._getNullModule(oldModuleName);
71+
}
6572

6673
var promise = Q.reject();
6774

@@ -356,6 +363,23 @@ class ResolutionRequest {
356363
const error = new Error('Failed to resolve "' + toModuleName + '" from "' + fromModule.path + '"');
357364
log.error(error, { simple: true, exit: false });
358365
}
366+
367+
_getNullModule(modulePath) {
368+
return Q.try(() => {
369+
const isNew = this._moduleCache._moduleCache[modulePath] == null;
370+
const module = this._moduleCache.getModule(modulePath);
371+
if (isNew) {
372+
module.isNull = true;
373+
module.code = 'module.exports = null;';
374+
module.isHaste = () => false;
375+
module.isPolyfill = () => false;
376+
module.getName = () => Q(modulePath);
377+
module.getPackage = () => null;
378+
module.getDependencies = () => Q([]);
379+
}
380+
return module;
381+
});
382+
}
359383
}
360384

361385

packager/react-packager/src/DependencyResolver/Package.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,10 @@ class Package {
6969
const redirect = browser[relPath] ||
7070
browser[relPath + '.js'] ||
7171
browser[relPath + '.json'];
72-
if (redirect) {
72+
if (redirect === false) {
73+
return null;
74+
}
75+
if (typeof redirect === 'string') {
7376
return path.join(
7477
this.root,
7578
redirect

packager/react-packager/src/DependencyResolver/index.js

+8
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,14 @@ HasteDependencyResolver.prototype.wrapModule = function(resolutionResponse, modu
126126
return Q(code);
127127
}
128128

129+
if (module.isNull) {
130+
return defineModuleCode({
131+
moduleName: module.id,
132+
deps: [],
133+
code: module.code,
134+
});
135+
}
136+
129137
const resolvedDeps = Object.create(null);
130138
const resolvedDepsArr = [];
131139

0 commit comments

Comments
 (0)