Skip to content

Commit 5b737d5

Browse files
author
James Halliday
committed
finally seems to fully handle browser field from outside foo/bar resolution
1 parent 5ebb39a commit 5b737d5

File tree

1 file changed

+22
-20
lines changed

1 file changed

+22
-20
lines changed

lib/async.js

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -69,27 +69,29 @@ module.exports = function resolve (x, opts, cb) {
6969
if (exts.length === 0) return cb(null, undefined, pkg);
7070
var file = x + exts[0];
7171

72-
isFile(file, function (err, ex) {
72+
if (pkg) onpkg(null, pkg)
73+
else loadpkg(path.dirname(file), onpkg);
74+
75+
function onpkg (err, pkg_, dir) {
76+
pkg = pkg_;
7377
if (err) return cb(err)
74-
if (!ex) return load(exts.slice(1), x, pkg)
75-
if (pkg) return cb(null, file, pkg)
76-
77-
loadpkg(path.dirname(file), function (err, pkg, dir) {
78-
if (err) return cb(err)
79-
if (pkg && opts.pathFilter) {
80-
var rel = path.relative(dir, file)
81-
.slice(0, -exts[0].length)
82-
;
83-
var r = opts.pathFilter(pkg, x, rel);
84-
if (r) return load(
85-
extensions.slice(),
86-
path.resolve(dir, r),
87-
pkg
88-
);
89-
}
90-
cb(null, file, pkg)
91-
});
92-
});
78+
if (dir && pkg && opts.pathFilter) {
79+
var rfile = path.relative(dir, file);
80+
var rel = rfile.slice(0, rfile.length - exts[0].length);
81+
var r = opts.pathFilter(pkg, x, rel);
82+
if (r) return load(
83+
[''].concat(extensions.slice()),
84+
path.resolve(dir, r),
85+
pkg
86+
);
87+
}
88+
isFile(file, onex);
89+
}
90+
function onex (err, ex) {
91+
if (err) cb(err)
92+
else if (!ex) load(exts.slice(1), x, pkg)
93+
else cb(null, file, pkg)
94+
}
9395
}
9496
}
9597

0 commit comments

Comments
 (0)