Skip to content

Commit 68136d5

Browse files
authored
fix: handling of bare external specifier (#157)
1 parent 7571704 commit 68136d5

File tree

4 files changed

+12
-10
lines changed

4 files changed

+12
-10
lines changed

mod_test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,6 +1018,7 @@ Deno.test("externals", async (t) => {
10181018
const output = res.outputFiles[0];
10191019
assertStringIncludes(output.text, "foo:bar");
10201020
assertStringIncludes(output.text, "foo:baz/bar");
1021+
assertStringIncludes(output.text, "bar");
10211022
});
10221023
});
10231024

src/plugin_deno_resolver.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,21 +106,21 @@ export function denoResolverPlugin(
106106
return undefined;
107107
}
108108

109-
// We can then resolve the specifier relative to the referrer URL, using
110-
// the workspace resolver.
111-
const resolved = new URL(
112-
resolver!.resolve(args.path, referrer.href),
113-
);
114-
115109
for (const externalRegexp of externalRegexps) {
116-
if (externalRegexp.test(resolved.href)) {
110+
if (externalRegexp.test(args.path)) {
117111
return {
118-
path: resolved.href,
112+
path: args.path,
119113
external: true,
120114
};
121115
}
122116
}
123117

118+
// We can then resolve the specifier relative to the referrer URL, using
119+
// the workspace resolver.
120+
const resolved = new URL(
121+
resolver!.resolve(args.path, referrer.href),
122+
);
123+
124124
// Now pass the resolved specifier back into the resolver, for a second
125125
// pass. Now plugins can perform any resolution they want on the fully
126126
// resolved specifier.

testdata/externals.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export { a } from "foo:bar";
22
export { b } from "foo:baz/bar";
3+
export { c } from "bar";

testdata/npm/react.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/** @jsxRuntime automatic */
2-
/** @jsxImportSource npm:react */
3-
import { renderToString } from "npm:react-dom/server";
2+
/** @jsxImportSource npm:react@18.3.0 */
3+
import { renderToString } from "npm:react-dom@18.3.0/server";
44

55
export default renderToString(<div>hello world</div>);

0 commit comments

Comments
 (0)