From 0fac29efd7a60cd982eb26ba026ac4b8ad715e91 Mon Sep 17 00:00:00 2001 From: Dan Marshall Date: Mon, 24 Dec 2018 14:14:12 -0800 Subject: [PATCH] Resolve package.browser in subfolders (with backslashes) (#2445) * add alias lookup when filename contains backslashes * Create subfile.js in a deep subfolder * Create nested.js * add unit test for files in subfolders * prettier * Remove white space * zero length file --- packages/core/parcel-bundler/src/Resolver.js | 4 ++++ .../package-browser-alias/nested.js | 0 .../package-browser-alias/package.json | 3 ++- .../subfolder1/subfolder2/subfile.js | 0 packages/core/parcel-bundler/test/resolver.js | 22 +++++++++++++++++++ 5 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 packages/core/parcel-bundler/test/integration/resolver/node_modules/package-browser-alias/nested.js create mode 100644 packages/core/parcel-bundler/test/integration/resolver/node_modules/package-browser-alias/subfolder1/subfolder2/subfile.js diff --git a/packages/core/parcel-bundler/src/Resolver.js b/packages/core/parcel-bundler/src/Resolver.js index d5037782eaa..f63c13a8f90 100755 --- a/packages/core/parcel-bundler/src/Resolver.js +++ b/packages/core/parcel-bundler/src/Resolver.js @@ -405,6 +405,10 @@ class Resolver { } } } + // Or try a lookup replacing backslash characters with forward slash + if (alias == null && ~filename.indexOf('\\')) { + alias = aliases[filename.replace(/\\/g, '/')]; + } } if (typeof alias === 'string') { diff --git a/packages/core/parcel-bundler/test/integration/resolver/node_modules/package-browser-alias/nested.js b/packages/core/parcel-bundler/test/integration/resolver/node_modules/package-browser-alias/nested.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/core/parcel-bundler/test/integration/resolver/node_modules/package-browser-alias/package.json b/packages/core/parcel-bundler/test/integration/resolver/node_modules/package-browser-alias/package.json index 8dd1b6b1544..b173a0e5612 100644 --- a/packages/core/parcel-bundler/test/integration/resolver/node_modules/package-browser-alias/package.json +++ b/packages/core/parcel-bundler/test/integration/resolver/node_modules/package-browser-alias/package.json @@ -3,6 +3,7 @@ "main": "main.js", "browser": { "./main.js": "./browser.js", - "./foo": "./bar" + "./foo": "./bar", + "./nested.js": "./subfolder1/subfolder2/subfile.js" } } diff --git a/packages/core/parcel-bundler/test/integration/resolver/node_modules/package-browser-alias/subfolder1/subfolder2/subfile.js b/packages/core/parcel-bundler/test/integration/resolver/node_modules/package-browser-alias/subfolder1/subfolder2/subfile.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/core/parcel-bundler/test/resolver.js b/packages/core/parcel-bundler/test/resolver.js index f645f23dd8d..f16bdd7d9cd 100644 --- a/packages/core/parcel-bundler/test/resolver.js +++ b/packages/core/parcel-bundler/test/resolver.js @@ -362,6 +362,28 @@ describe('resolver', function() { assert.equal(resolved.pkg.name, 'package-browser-alias'); }); + it('should alias a deep nested relative file using the package.browser field', async function() { + let resolved = await resolver.resolve( + './nested', + path.join( + rootDir, + 'node_modules', + 'package-browser-alias', + 'browser.js' + ) + ); + assert.equal( + resolved.path, + path.join( + rootDir, + 'node_modules', + 'package-browser-alias', + 'subfolder1/subfolder2/subfile.js' + ) + ); + assert.equal(resolved.pkg.name, 'package-browser-alias'); + }); + it('should alias a sub-file using the package.alias field', async function() { let resolved = await resolver.resolve( 'package-alias/foo',