Skip to content

Commit 52dd114

Browse files
Don't load submodules with not installed optional dependencies
See: metarhia#1937
1 parent 4cabe81 commit 52dd114

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

lib/deps.js

+10-2
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,16 @@ const loadModule = (name) => {
5454
const subKeys = Object.keys(pkg.exports).map((key) => key.substring(2));
5555
const subNames = subKeys.filter(validSubmodules);
5656
for (const subName of subNames) {
57-
const sub = appRequire(name + '/' + subName);
58-
lib[subName] = sub;
57+
try {
58+
const sub = appRequire(name + '/' + subName);
59+
lib[subName] = sub;
60+
} catch (e) {
61+
if (e.message.startsWith("Cannot find module '")) {
62+
const moduleName = e.message.substring(20, e.message.indexOf("'\n"));
63+
const optional = pkg.peerDependenciesMeta?.[moduleName].optional;
64+
if (optional) continue; else throw e;
65+
}
66+
}
5967
}
6068
return lib;
6169
};

0 commit comments

Comments
 (0)