Skip to content

Commit

Permalink
fix: error bundling JSR islands (#2552)
Browse files Browse the repository at this point in the history
  • Loading branch information
marvinhagemeister authored Jun 26, 2024
1 parent fc820e8 commit becd440
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 1 deletion.
1 change: 1 addition & 0 deletions deno.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
"@astral/astral": "jsr:@astral/astral@^0.4.0",
"@fresh/plugin-tailwind": "./plugin-tailwindcss/src/mod.ts",
"@luca/esbuild-deno-loader": "jsr:@luca/esbuild-deno-loader@^0.10.3",
"@marvinh-test/fresh-island": "jsr:@marvinh-test/fresh-island@^0.0.1",
"@preact/signals": "npm:@preact/signals@^1.2.3",
"@std/async": "jsr:@std/async@^0.224.1",
"@std/cli": "jsr:@std/cli@^0.224.5",
Expand Down
10 changes: 10 additions & 0 deletions deno.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 24 additions & 0 deletions src/dev/builder_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { expect } from "@std/expect";
import * as path from "@std/path";
import { Builder } from "./builder.ts";
import { App } from "../app.ts";
import { RemoteIsland } from "@marvinh-test/fresh-island";

Deno.test({
name: "Builder - chain onTransformStaticFile",
Expand Down Expand Up @@ -64,3 +65,26 @@ Deno.test({
expect(css).toContain('body { background: url("/foo.jpg?__frsh_c=');
},
});

Deno.test({
name: "Builder - can bundle islands from JSR",
fn: async () => {
const builder = new Builder();
const tmp = await Deno.makeTempDir();
const app = new App({
staticDir: tmp,
build: {
outDir: path.join(tmp, "dist"),
},
});

app.island("jsr:@marvinh-test/fresh-island", "RemoteIsland", RemoteIsland);

await builder.build(app);

const code = await Deno.readTextFile(
path.join(tmp, "dist", "static", "RemoteIsland.js"),
);
expect(code).toContain('"remote-island"');
},
});
14 changes: 13 additions & 1 deletion src/dev/esbuild.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,19 @@ export async function bundleJs(
dependencies.set(entryPath, imports);

if (entryPath !== "fresh-runtime.js" && entry.entryPoint !== undefined) {
const filePath = path.join(options.cwd, entry.entryPoint);
let filePath = "";
// Resolve back specifiers to original url. This is necessary
// to get JSR dependencies to match what we specified as
// an entry point to esbuild.
if (
entry.entryPoint.startsWith("https://") ||
entry.entryPoint.startsWith("http://")
) {
const basename = path.basename(entryPath, path.extname(entryPath));
filePath = options.entryPoints[basename];
} else {
filePath = path.join(options.cwd, entry.entryPoint);
}

const name = entryToName.get(filePath)!;
entryToChunk.set(name, entryPath);
Expand Down

0 comments on commit becd440

Please sign in to comment.