Skip to content

Commit

Permalink
Merge pull request #260 from webpack/bugfix/256
Browse files Browse the repository at this point in the history
exports and imports field fixes
  • Loading branch information
sokra committed Oct 20, 2020
2 parents 0001f80 + afcd626 commit 8a094e8
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 10 deletions.
4 changes: 2 additions & 2 deletions lib/ResolverFactory.js
Expand Up @@ -377,7 +377,7 @@ exports.createResolver = function (options) {
"internal",
conditionNames,
importsField,
"final-file",
"relative",
"internal-resolve"
)
);
Expand Down Expand Up @@ -444,7 +444,7 @@ exports.createResolver = function (options) {
"resolve-in-package",
conditionNames,
exportsField,
"final-file"
"relative"
)
);
});
Expand Down
51 changes: 46 additions & 5 deletions test/exportsField.js
Expand Up @@ -1314,6 +1314,13 @@ describe("ExportsFieldPlugin", () => {
const nodeFileSystem = new CachedInputFileSystem(fs, 4000);

const resolver = ResolverFactory.createResolver({
extensions: [".js"],
fileSystem: nodeFileSystem,
fullySpecified: true,
conditionNames: ["webpack"]
});

const commonjsResolver = ResolverFactory.createResolver({
extensions: [".js"],
fileSystem: nodeFileSystem,
conditionNames: ["webpack"]
Expand Down Expand Up @@ -1354,7 +1361,7 @@ describe("ExportsFieldPlugin", () => {
);
});

it("resolve using exports field, not a browser field #2", done => {
it("resolve using exports field and a browser alias field #2", done => {
const resolver = ResolverFactory.createResolver({
aliasFields: ["browser"],
extensions: [".js"],
Expand All @@ -1371,7 +1378,7 @@ describe("ExportsFieldPlugin", () => {
if (err) return done(err);
if (!result) throw new Error("No result");
result.should.equal(
path.resolve(fixture2, "node_modules/exports-field/lib/main.js")
path.resolve(fixture2, "node_modules/exports-field/lib/browser.js")
);
done();
}
Expand All @@ -1393,6 +1400,38 @@ describe("ExportsFieldPlugin", () => {
);
});

it("throw error if extension not provided", done => {
resolver.resolve(
{},
fixture2,
"exports-field/dist/main",
{},
(err, result) => {
if (!err) throw new Error(`expect error, got ${result}`);
err.should.be.instanceof(Error);
err.message.should.match(/Can't resolve/);
done();
}
);
});

it("should resolve extension without fullySpecified", done => {
commonjsResolver.resolve(
{},
fixture2,
"exports-field/dist/main",
{},
(err, result) => {
if (err) return done(err);
if (!result) throw new Error("No result");
result.should.equal(
path.resolve(fixture2, "node_modules/exports-field/lib/lib2/main.js")
);
done();
}
);
});

it("resolver should respect condition names", done => {
resolver.resolve(
{},
Expand Down Expand Up @@ -1728,10 +1767,12 @@ describe("ExportsFieldPlugin", () => {
" existing directory .../node_modules/exports-field",
" using description file: .../node_modules/exports-field/package.json (relative path: .)",
" using exports field: ./lib/lib2/browser.js",
" .../node_modules/exports-field/lib/lib2/browser.js doesn't exist",
" using description file: .../node_modules/exports-field/package.json (relative path: ./lib/lib2/browser.js)",
" .../node_modules/exports-field/lib/lib2/browser.js doesn't exist",
" using exports field: ./lib/browser.js",
" existing file: .../node_modules/exports-field/lib/browser.js",
" reporting result .../node_modules/exports-field/lib/browser.js"
" using description file: .../node_modules/exports-field/package.json (relative path: ./lib/browser.js)",
" existing file: .../node_modules/exports-field/lib/browser.js",
" reporting result .../node_modules/exports-field/lib/browser.js"
]);
done();
}
Expand Down
14 changes: 11 additions & 3 deletions test/importsField.js
Expand Up @@ -1325,10 +1325,18 @@ describe("ImportsFieldPlugin", () => {
" existing directory .../node_modules/a",
" using description file: .../node_modules/a/package.json (relative path: .)",
" using exports field: ./lib/lib2/index.js",
" .../node_modules/a/lib/lib2/index.js doesn't exist",
" using description file: .../node_modules/a/package.json (relative path: ./lib/lib2/index.js)",
" no extension",
" .../node_modules/a/lib/lib2/index.js doesn't exist",
" .js",
" .../node_modules/a/lib/lib2/index.js.js doesn't exist",
" as directory",
" .../node_modules/a/lib/lib2/index.js doesn't exist",
" using exports field: ./lib/index.js",
" existing file: .../node_modules/a/lib/index.js",
" reporting result .../node_modules/a/lib/index.js"
" using description file: .../node_modules/a/package.json (relative path: ./lib/index.js)",
" no extension",
" existing file: .../node_modules/a/lib/index.js",
" reporting result .../node_modules/a/lib/index.js"
]);
done();
}
Expand Down

0 comments on commit 8a094e8

Please sign in to comment.