Skip to content

Commit

Permalink
Also pass resolved ids to external if they use the object form (#3753)
Browse files Browse the repository at this point in the history
  • Loading branch information
lukastaegert committed Aug 29, 2020
1 parent 7e2cbc5 commit 21fcec3
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/ModuleLoader.ts
Expand Up @@ -423,7 +423,7 @@ export class ModuleLoader {
if (resolveIdResult) {
if (typeof resolveIdResult === 'object') {
id = resolveIdResult.id;
if (resolveIdResult.external) {
if (resolveIdResult.external || this.options.external(resolveIdResult.id, importer, true)) {
external = true;
}
if (resolveIdResult.moduleSideEffects != null) {
Expand Down
51 changes: 51 additions & 0 deletions test/function/samples/external-resolved/_config.js
@@ -0,0 +1,51 @@
const assert = require('assert');

const testedIds = [];

module.exports = {
description: 'passes both unresolved and resolved ids to the external option',
context: {
require() {
return true;
}
},
exports(exports) {
assert.deepStrictEqual(exports, {
resolvedExternal: true,
resolvedObject: true,
resolvedObjectExternal: true,
resolvedString: true
});
assert.deepStrictEqual(testedIds, [
'resolve-string',
'resolve-external',
'resolve-object',
'resolve-object-external',
'resolved-string',
'resolved-object'
]);
},
options: {
external(id) {
testedIds.push(id);
return id.startsWith('resolved');
},
plugins: {
name: 'test-plugin',
resolveId(source) {
switch (source) {
case 'resolve-string':
return 'resolved-string';
case 'resolve-external':
return false;
case 'resolve-object':
return { id: 'resolved-object', external: false };
case 'resolve-object-external':
return { id: 'resolved-object-external', external: true };
default:
return null;
}
}
}
}
};
4 changes: 4 additions & 0 deletions test/function/samples/external-resolved/main.js
@@ -0,0 +1,4 @@
export {default as resolvedString} from 'resolve-string';
export {default as resolvedExternal} from 'resolve-external';
export {default as resolvedObject} from 'resolve-object';
export {default as resolvedObjectExternal} from 'resolve-object-external';

0 comments on commit 21fcec3

Please sign in to comment.