feat(bundle): support html entrypoint (#29856)

For instance

`deno bundle --outdir dist index.html`

It will find scripts referenced in the html, bundle them, and then
update the paths in index.html for the bundled assets.

Right now it doesn't handle other assets (from `link` elements), but it
could
This commit is contained in:
Nathan Whitaker 2025-09-09 12:18:10 -07:00 committed by GitHub
parent 41ff38ae65
commit 4e4bbf2fcc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
33 changed files with 1480 additions and 74 deletions

View file

@ -0,0 +1,25 @@
import { assertFileContains } from "./assert-helpers.ts";
let jsFile: string | undefined;
Deno.readDirSync("./dist").forEach((entry) => {
if (entry.name.endsWith(".js")) {
jsFile = "./dist/" + entry.name;
}
});
if (!jsFile) {
throw new Error("No .js file found");
}
assertFileContains(
"./dist/multiple-scripts.html",
/src="\.\/multiple-scripts-[^\.]+\.js"/,
);
assertFileContains(
jsFile,
'insertAdjacentHTML("beforeend", "A")',
);
assertFileContains(
jsFile,
'insertAdjacentHTML("beforeend", "B")',
);