Skip to content
This repository has been archived by the owner on Aug 4, 2021. It is now read-only.

Commit

Permalink
Fix pkg.browser mappings issue by specifying a value of false (#183)
Browse files Browse the repository at this point in the history
* Fix pkg.browser mappings issue by specifying a value of `false`

* Add tests for #183
  • Loading branch information
allex authored and lukastaegert committed Feb 22, 2019
1 parent 73b01b1 commit 9ce01d4
Show file tree
Hide file tree
Showing 9 changed files with 81 additions and 6 deletions.
17 changes: 11 additions & 6 deletions src/index.js
Expand Up @@ -82,6 +82,7 @@ export default function nodeResolve ( options = {} ) {

const basedir = importer ? dirname( importer ) : process.cwd();

// https://github.com/defunctzombie/package-browser-field-spec
if (options.browser && browserMapCache[importer]) {
const resolvedImportee = resolve( basedir, importee );
const browser = browserMapCache[importer];
Expand Down Expand Up @@ -157,16 +158,19 @@ export default function nodeResolve ( options = {} ) {
importee,
Object.assign( resolveOptions, customResolveOptions )
)
.catch(() => false)
.then(resolved => {
if (options.browser && packageBrowserField) {
if (packageBrowserField[ resolved ]) {
if ( resolved && options.browser && packageBrowserField ) {
if ( packageBrowserField.hasOwnProperty(resolved) ) {
if (!packageBrowserField[resolved]) {
browserMapCache[resolved] = packageBrowserField;
return ES6_BROWSER_EMPTY;
}
resolved = packageBrowserField[ resolved ];
}
browserMapCache[resolved] = packageBrowserField;
}

if ( !disregardResult && resolved !== false ) {
if ( !disregardResult ) {
if ( !preserveSymlinks && resolved && fs.existsSync( resolved ) ) {
resolved = fs.realpathSync( resolved );
}
Expand All @@ -190,9 +194,10 @@ export default function nodeResolve ( options = {} ) {
if ( resolved && options.modulesOnly ) {
return readFileAsync( resolved, 'utf-8').then(code => isModule( code ) ? resolved : null);
} else {
return resolved === false ? null : resolved;
return resolved;
}
});
})
.catch(() => null);
}
};
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions test/node_modules/isomorphic-object-with-false/lib/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions test/node_modules/isomorphic-object-with-false/package.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions test/samples/browser-object-with-false/main.js
@@ -0,0 +1,15 @@
import Client from 'isomorphic-object-with-false';
import HTTPTracker from 'isomorphic-object-with-false/lib/client/http-tracker';
import ES6_BROWSER_EMPTY from '../../../src/empty';
import HTTPTrackerWithSubPath from 'isomorphic-object-with-false/lib/subpath/foo';

// do some assert

assert.deepEqual(new Client('ws:'), { name: 'websocket-tracker' })
assert.deepEqual(new Client('http:'), { name: 'NULL' })
assert.equal(HTTPTracker, ES6_BROWSER_EMPTY);
assert.equal(HTTPTrackerWithSubPath, ES6_BROWSER_EMPTY);


// expose
export default "ok"
13 changes: 13 additions & 0 deletions test/test.js
Expand Up @@ -657,4 +657,17 @@ describe( 'rollup-plugin-node-resolve', function () {
}).then(executeBundle)
.then(({exports}) => exports.then(result => assert.equal(result.default, 42)));
});

it( 'pkg.browser with mapping to prevent bundle by specifying a value of false', () => {
return rollup.rollup({
input: 'samples/browser-object-with-false/main.js',
plugins: [
nodeResolve({ browser: true }),
commonjs()
]
}).then( executeBundle ).then( module => {
assert.equal( module.exports, 'ok' );
});
});

});

0 comments on commit 9ce01d4

Please sign in to comment.