Skip to content

Commit 49666b8

Browse files
committed
Improve package.json exports support
1 parent 3abbbd6 commit 49666b8

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

crawl/utils.mjs

+3-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ export const getDirectoryScriptName = (root, src) => {
2020
const packageJSON = packageCache.get(packagePath) ||
2121
JSON.parse(fs.readFileSync(packagePath, { encoding: 'utf-8' }));
2222
packageCache.set(packagePath, packageJSON);
23-
const main = packageJSON.module ||
24-
(typeof packageJSON.browser === 'string' && packageJSON.browser) ||
23+
const main = (typeof packageJSON.browser === 'string' && packageJSON.browser) ||
24+
packageJSON.module ||
25+
(typeof packageJSON.exports === 'string' && packageJSON.exports) ||
2526
packageJSON.main;
2627
const fullPath = path.resolve(src, main.startsWith('/') ? main.slice(1) : main);
2728
return changeScriptExt(fullPath);

utils.mjs

+3-2
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ export const resolvePackageMain = async (dir, { search = false } = {}) => {
236236
(packageJSON.browser[`./${packageJSON.main}`] || packageJSON.browser[packageJSON.main])
237237
) ||
238238
packageJSON.module ||
239-
packageJSON.exports ||
239+
(typeof packageJSON.exports === 'string' && packageJSON.exports) ||
240240
packageJSON.main ||
241241
`index${await findExistingExtension(`${dirPath}/index`)}`;
242242
};
@@ -307,6 +307,7 @@ export const resolvePackageFrom = (basedir, dpath, hqroot) => new Promise((resol
307307
packageFilter(pkg) {
308308
const { main: pkgMain } = pkg;
309309
if (pkg.module) pkg.main = pkg.module;
310+
else if (typeof pkg.exports === 'string') pkg.main = pkg.exports;
310311
if (typeof pkg.browser === 'string') pkg.main = pkg.browser;
311312
else if (typeof pkg.browser === 'object' && pkg.browser) {
312313
if (modPath) {
@@ -425,7 +426,7 @@ export const getSrc = async root => {
425426
]);
426427
return packageJSON.module ?
427428
path.dirname(packageJSON.module) :
428-
packageJSON.exports ?
429+
typeof packageJSON.exports === 'string' ?
429430
path.dirname(packageJSON.exports) :
430431
srcHTML ?
431432
'src' :

0 commit comments

Comments
 (0)