Skip to content

Commit 21fcec3

Browse files
authored
Also pass resolved ids to external if they use the object form (#3753)
1 parent 7e2cbc5 commit 21fcec3

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed

src/ModuleLoader.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ export class ModuleLoader {
423423
if (resolveIdResult) {
424424
if (typeof resolveIdResult === 'object') {
425425
id = resolveIdResult.id;
426-
if (resolveIdResult.external) {
426+
if (resolveIdResult.external || this.options.external(resolveIdResult.id, importer, true)) {
427427
external = true;
428428
}
429429
if (resolveIdResult.moduleSideEffects != null) {
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
const assert = require('assert');
2+
3+
const testedIds = [];
4+
5+
module.exports = {
6+
description: 'passes both unresolved and resolved ids to the external option',
7+
context: {
8+
require() {
9+
return true;
10+
}
11+
},
12+
exports(exports) {
13+
assert.deepStrictEqual(exports, {
14+
resolvedExternal: true,
15+
resolvedObject: true,
16+
resolvedObjectExternal: true,
17+
resolvedString: true
18+
});
19+
assert.deepStrictEqual(testedIds, [
20+
'resolve-string',
21+
'resolve-external',
22+
'resolve-object',
23+
'resolve-object-external',
24+
'resolved-string',
25+
'resolved-object'
26+
]);
27+
},
28+
options: {
29+
external(id) {
30+
testedIds.push(id);
31+
return id.startsWith('resolved');
32+
},
33+
plugins: {
34+
name: 'test-plugin',
35+
resolveId(source) {
36+
switch (source) {
37+
case 'resolve-string':
38+
return 'resolved-string';
39+
case 'resolve-external':
40+
return false;
41+
case 'resolve-object':
42+
return { id: 'resolved-object', external: false };
43+
case 'resolve-object-external':
44+
return { id: 'resolved-object-external', external: true };
45+
default:
46+
return null;
47+
}
48+
}
49+
}
50+
}
51+
};
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export {default as resolvedString} from 'resolve-string';
2+
export {default as resolvedExternal} from 'resolve-external';
3+
export {default as resolvedObject} from 'resolve-object';
4+
export {default as resolvedObjectExternal} from 'resolve-object-external';

0 commit comments

Comments
 (0)