From 5e31ffce27dda42178447b85c85b1d02be70e8fb Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Fri, 16 Sep 2016 06:05:22 -0700 Subject: [PATCH] Support `false` mappings in `"browser"` fields Summary: This adds support for `false` values in `package.json` `"browser"` and `"react-native"` mappings. All `false` values are not longer silently ignored, but redirected to an empty file. Fixes #9854 #9518 Reviewed By: bestander Differential Revision: D3876521 fbshipit-source-id: 96d1ba03518812bc88c51672c374956eabd40c9b --- .../src/node-haste/DependencyGraph/ResolutionRequest.js | 8 +++++--- .../src/node-haste/DependencyGraph/assets/empty-module.js | 8 ++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 react-packager/src/node-haste/DependencyGraph/assets/empty-module.js diff --git a/react-packager/src/node-haste/DependencyGraph/ResolutionRequest.js b/react-packager/src/node-haste/DependencyGraph/ResolutionRequest.js index e7728d0b..f0d8db30 100644 --- a/react-packager/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/react-packager/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -17,6 +17,8 @@ const realPath = require('path'); const isAbsolutePath = require('absolute-path'); const getAssetDataFromName = require('../lib/getAssetDataFromName'); +const emptyModule = require.resolve('./assets/empty-module.js'); + class ResolutionRequest { constructor({ platform, @@ -193,7 +195,7 @@ class ResolutionRequest { if (recursive) { // doesn't block the return of this function invocation, but defers - // the resulution of collectionsInProgress.done.then(…) + // the resulution of collectionsInProgress.done.then(...) dependencyModules .forEach(dependency => collectedDependencies.get(dependency)); } @@ -322,7 +324,7 @@ class ResolutionRequest { return this._redirectRequire(fromModule, potentialModulePath).then( realModuleName => { if (realModuleName === false) { - return null; + return this._loadAsFile(emptyModule, fromModule, toModuleName); } return this._tryResolve( @@ -341,7 +343,7 @@ class ResolutionRequest { realModuleName => { // exclude if (realModuleName === false) { - return null; + return this._loadAsFile(emptyModule, fromModule, toModuleName); } if (isRelativeImport(realModuleName) || isAbsolutePath(realModuleName)) { diff --git a/react-packager/src/node-haste/DependencyGraph/assets/empty-module.js b/react-packager/src/node-haste/DependencyGraph/assets/empty-module.js new file mode 100644 index 00000000..e5ed0eb0 --- /dev/null +++ b/react-packager/src/node-haste/DependencyGraph/assets/empty-module.js @@ -0,0 +1,8 @@ + /** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */