Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,54 @@ High-quality APIs for [Deno](https://deno.com/) and the web. Use fearlessly.
- [Contributing guidelines](.github/CONTRIBUTING.md)
- [Frequently asked questions (FAQ)](./.github/FAQ.md)

## Using the Standard Library in a browser

Standard Library packages are published as TypeScript on JSR. Bundle them into
JavaScript before loading them in a browser. For example, create an entry point:

```ts ignore
// main.ts
import { escape } from "jsr:@std/html@^1.0.4/entities";

document.body.innerHTML = escape("<Hello from @std!>");
```

Then bundle it for browsers:

```sh
deno bundle --platform browser -o dist/main.js main.ts
```

For custom esbuild pipelines, use
[`esbuild-deno-loader`](https://jsr.io/@luca/esbuild-deno-loader) so esbuild can
resolve Deno, JSR, and import-map specifiers:

```ts ignore
// build.ts
import * as esbuild from "npm:esbuild@^0.28.2";
import { denoPlugins } from "jsr:@luca/esbuild-deno-loader@^0.11.1";

await esbuild.build({
plugins: [...denoPlugins()],
entryPoints: ["main.ts"],
outfile: "dist/main.js",
bundle: true,
format: "esm",
});

await esbuild.stop();
```

Then load `dist/main.js` from an HTML module script:

```html
<script type="module" src="./dist/main.js"></script>
```

Only use modules whose source contains the
`// This module is browser compatible.` declaration. Other modules may depend on
Deno or Node.js APIs that are unavailable in browsers.

## Releases

Package versions >=1.0.0 follow [Semantic Versioning](https://semver.org/), and
Expand Down
Loading