bun-types 1.3.2-canary.20251104T140728 → 1.3.2-canary.20251106T140813
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bun.d.ts +4 -4
- package/docs/README.md +28 -0
- package/globals.d.ts +0 -1
- package/overrides.d.ts +45 -15
- package/package.json +1 -1
- package/test.d.ts +1 -1
- package/docs/api/binary-data.md +0 -1038
- package/docs/api/cc.md +0 -197
- package/docs/api/color.md +0 -262
- package/docs/api/console.md +0 -57
- package/docs/api/cookie.md +0 -449
- package/docs/api/dns.md +0 -110
- package/docs/api/fetch.md +0 -463
- package/docs/api/ffi.md +0 -557
- package/docs/api/file-io.md +0 -366
- package/docs/api/file-system-router.md +0 -112
- package/docs/api/file.md +0 -19
- package/docs/api/glob.md +0 -178
- package/docs/api/globals.md +0 -387
- package/docs/api/hashing.md +0 -319
- package/docs/api/html-rewriter.md +0 -334
- package/docs/api/http.md +0 -1408
- package/docs/api/import-meta.md +0 -69
- package/docs/api/node-api.md +0 -14
- package/docs/api/redis.md +0 -597
- package/docs/api/s3.md +0 -850
- package/docs/api/secrets.md +0 -319
- package/docs/api/semver.md +0 -52
- package/docs/api/spawn.md +0 -582
- package/docs/api/sql.md +0 -1374
- package/docs/api/sqlite.md +0 -694
- package/docs/api/streams.md +0 -230
- package/docs/api/tcp.md +0 -221
- package/docs/api/transpiler.md +0 -276
- package/docs/api/udp.md +0 -123
- package/docs/api/utils.md +0 -891
- package/docs/api/websockets.md +0 -573
- package/docs/api/workers.md +0 -322
- package/docs/api/yaml.md +0 -668
- package/docs/benchmarks.md +0 -120
- package/docs/bun-flavored-toml.md +0 -42
- package/docs/bundler/css.md +0 -1028
- package/docs/bundler/css_modules.md +0 -145
- package/docs/bundler/executables.md +0 -626
- package/docs/bundler/fullstack.md +0 -418
- package/docs/bundler/hmr.md +0 -234
- package/docs/bundler/html.md +0 -349
- package/docs/bundler/index.md +0 -1735
- package/docs/bundler/intro.md +0 -75
- package/docs/bundler/loaders.md +0 -410
- package/docs/bundler/macros.md +0 -329
- package/docs/bundler/plugins.md +0 -449
- package/docs/bundler/vs-esbuild.md +0 -1127
- package/docs/cli/add.md +0 -173
- package/docs/cli/bun-completions.md +0 -3
- package/docs/cli/bun-create.md +0 -338
- package/docs/cli/bun-install.md +0 -349
- package/docs/cli/bun-upgrade.md +0 -39
- package/docs/cli/bunx.md +0 -89
- package/docs/cli/filter.md +0 -90
- package/docs/cli/info.md +0 -65
- package/docs/cli/init.md +0 -85
- package/docs/cli/install.md +0 -344
- package/docs/cli/link.md +0 -40
- package/docs/cli/outdated.md +0 -90
- package/docs/cli/patch-commit.md +0 -11
- package/docs/cli/pm.md +0 -285
- package/docs/cli/publish.md +0 -120
- package/docs/cli/remove.md +0 -7
- package/docs/cli/run.md +0 -261
- package/docs/cli/test.md +0 -397
- package/docs/cli/unlink.md +0 -9
- package/docs/cli/update.md +0 -129
- package/docs/cli/why.md +0 -67
- package/docs/contributing/upgrading-webkit.md +0 -57
- package/docs/ecosystem/elysia.md +0 -24
- package/docs/ecosystem/express.md +0 -37
- package/docs/ecosystem/hono.md +0 -18
- package/docs/ecosystem/react.md +0 -65
- package/docs/ecosystem/stric.md +0 -38
- package/docs/guides/binary/arraybuffer-to-array.md +0 -27
- package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
- package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
- package/docs/guides/binary/arraybuffer-to-string.md +0 -15
- package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
- package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
- package/docs/guides/binary/blob-to-dataview.md +0 -14
- package/docs/guides/binary/blob-to-stream.md +0 -14
- package/docs/guides/binary/blob-to-string.md +0 -15
- package/docs/guides/binary/blob-to-typedarray.md +0 -14
- package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
- package/docs/guides/binary/buffer-to-blob.md +0 -14
- package/docs/guides/binary/buffer-to-readablestream.md +0 -41
- package/docs/guides/binary/buffer-to-string.md +0 -25
- package/docs/guides/binary/buffer-to-typedarray.md +0 -14
- package/docs/guides/binary/dataview-to-string.md +0 -15
- package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
- package/docs/guides/binary/typedarray-to-blob.md +0 -16
- package/docs/guides/binary/typedarray-to-buffer.md +0 -14
- package/docs/guides/binary/typedarray-to-dataview.md +0 -14
- package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
- package/docs/guides/binary/typedarray-to-string.md +0 -16
- package/docs/guides/deployment/railway.md +0 -157
- package/docs/guides/ecosystem/astro.md +0 -72
- package/docs/guides/ecosystem/discordjs.md +0 -77
- package/docs/guides/ecosystem/docker.md +0 -140
- package/docs/guides/ecosystem/drizzle.md +0 -185
- package/docs/guides/ecosystem/edgedb.md +0 -228
- package/docs/guides/ecosystem/elysia.md +0 -31
- package/docs/guides/ecosystem/express.md +0 -40
- package/docs/guides/ecosystem/hono.md +0 -39
- package/docs/guides/ecosystem/mongoose.md +0 -87
- package/docs/guides/ecosystem/neon-drizzle.md +0 -220
- package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
- package/docs/guides/ecosystem/nextjs.md +0 -49
- package/docs/guides/ecosystem/nuxt.md +0 -56
- package/docs/guides/ecosystem/pm2.md +0 -57
- package/docs/guides/ecosystem/prisma.md +0 -141
- package/docs/guides/ecosystem/qwik.md +0 -107
- package/docs/guides/ecosystem/react.md +0 -50
- package/docs/guides/ecosystem/remix.md +0 -78
- package/docs/guides/ecosystem/render.md +0 -79
- package/docs/guides/ecosystem/sentry.md +0 -52
- package/docs/guides/ecosystem/solidstart.md +0 -58
- package/docs/guides/ecosystem/ssr-react.md +0 -51
- package/docs/guides/ecosystem/stric.md +0 -55
- package/docs/guides/ecosystem/sveltekit.md +0 -125
- package/docs/guides/ecosystem/systemd.md +0 -113
- package/docs/guides/ecosystem/vite.md +0 -71
- package/docs/guides/html-rewriter/extract-links.md +0 -68
- package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
- package/docs/guides/http/cluster.md +0 -66
- package/docs/guides/http/fetch-unix.md +0 -33
- package/docs/guides/http/fetch.md +0 -24
- package/docs/guides/http/file-uploads.md +0 -94
- package/docs/guides/http/hot.md +0 -26
- package/docs/guides/http/proxy.md +0 -24
- package/docs/guides/http/server.md +0 -46
- package/docs/guides/http/simple.md +0 -18
- package/docs/guides/http/stream-file.md +0 -48
- package/docs/guides/http/stream-iterator.md +0 -47
- package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
- package/docs/guides/http/tls.md +0 -30
- package/docs/guides/install/add-dev.md +0 -26
- package/docs/guides/install/add-git.md +0 -36
- package/docs/guides/install/add-optional.md +0 -25
- package/docs/guides/install/add-peer.md +0 -43
- package/docs/guides/install/add-tarball.md +0 -33
- package/docs/guides/install/add.md +0 -42
- package/docs/guides/install/azure-artifacts.md +0 -73
- package/docs/guides/install/cicd.md +0 -41
- package/docs/guides/install/custom-registry.md +0 -30
- package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
- package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
- package/docs/guides/install/jfrog-artifactory.md +0 -28
- package/docs/guides/install/npm-alias.md +0 -23
- package/docs/guides/install/registry-scope.md +0 -38
- package/docs/guides/install/trusted.md +0 -46
- package/docs/guides/install/workspaces.md +0 -70
- package/docs/guides/install/yarnlock.md +0 -44
- package/docs/guides/process/argv.md +0 -58
- package/docs/guides/process/ctrl-c.md +0 -16
- package/docs/guides/process/ipc.md +0 -66
- package/docs/guides/process/nanoseconds.md +0 -13
- package/docs/guides/process/os-signals.md +0 -39
- package/docs/guides/process/spawn-stderr.md +0 -31
- package/docs/guides/process/spawn-stdout.md +0 -26
- package/docs/guides/process/spawn.md +0 -41
- package/docs/guides/process/stdin.md +0 -54
- package/docs/guides/read-file/arraybuffer.md +0 -28
- package/docs/guides/read-file/buffer.md +0 -19
- package/docs/guides/read-file/exists.md +0 -16
- package/docs/guides/read-file/json.md +0 -17
- package/docs/guides/read-file/mime.md +0 -20
- package/docs/guides/read-file/stream.md +0 -26
- package/docs/guides/read-file/string.md +0 -22
- package/docs/guides/read-file/uint8array.md +0 -21
- package/docs/guides/read-file/watch.md +0 -68
- package/docs/guides/runtime/build-time-constants.md +0 -293
- package/docs/guides/runtime/cicd.md +0 -43
- package/docs/guides/runtime/codesign-macos-executable.md +0 -56
- package/docs/guides/runtime/define-constant.md +0 -145
- package/docs/guides/runtime/delete-directory.md +0 -37
- package/docs/guides/runtime/delete-file.md +0 -19
- package/docs/guides/runtime/heap-snapshot.md +0 -26
- package/docs/guides/runtime/import-html.md +0 -15
- package/docs/guides/runtime/import-json.md +0 -44
- package/docs/guides/runtime/import-toml.md +0 -30
- package/docs/guides/runtime/import-yaml.md +0 -102
- package/docs/guides/runtime/read-env.md +0 -32
- package/docs/guides/runtime/set-env.md +0 -47
- package/docs/guides/runtime/shell.md +0 -40
- package/docs/guides/runtime/timezone.md +0 -35
- package/docs/guides/runtime/tsconfig-paths.md +0 -29
- package/docs/guides/runtime/typescript.md +0 -49
- package/docs/guides/runtime/vscode-debugger.md +0 -47
- package/docs/guides/runtime/web-debugger.md +0 -82
- package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
- package/docs/guides/streams/node-readable-to-blob.md +0 -11
- package/docs/guides/streams/node-readable-to-json.md +0 -12
- package/docs/guides/streams/node-readable-to-string.md +0 -12
- package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
- package/docs/guides/streams/to-array.md +0 -14
- package/docs/guides/streams/to-arraybuffer.md +0 -14
- package/docs/guides/streams/to-blob.md +0 -14
- package/docs/guides/streams/to-buffer.md +0 -15
- package/docs/guides/streams/to-json.md +0 -14
- package/docs/guides/streams/to-string.md +0 -14
- package/docs/guides/streams/to-typedarray.md +0 -22
- package/docs/guides/test/bail.md +0 -22
- package/docs/guides/test/coverage-threshold.md +0 -60
- package/docs/guides/test/coverage.md +0 -44
- package/docs/guides/test/happy-dom.md +0 -68
- package/docs/guides/test/migrate-from-jest.md +0 -143
- package/docs/guides/test/mock-clock.md +0 -48
- package/docs/guides/test/mock-functions.md +0 -68
- package/docs/guides/test/rerun-each.md +0 -14
- package/docs/guides/test/run-tests.md +0 -111
- package/docs/guides/test/skip-tests.md +0 -39
- package/docs/guides/test/snapshot.md +0 -95
- package/docs/guides/test/spy-on.md +0 -46
- package/docs/guides/test/svelte-test.md +0 -120
- package/docs/guides/test/testing-library.md +0 -92
- package/docs/guides/test/timeout.md +0 -15
- package/docs/guides/test/todo-tests.md +0 -67
- package/docs/guides/test/update-snapshots.md +0 -46
- package/docs/guides/test/watch-mode.md +0 -19
- package/docs/guides/util/base64.md +0 -15
- package/docs/guides/util/deep-equals.md +0 -39
- package/docs/guides/util/deflate.md +0 -18
- package/docs/guides/util/detect-bun.md +0 -23
- package/docs/guides/util/entrypoint.md +0 -17
- package/docs/guides/util/escape-html.md +0 -22
- package/docs/guides/util/file-url-to-path.md +0 -14
- package/docs/guides/util/gzip.md +0 -18
- package/docs/guides/util/hash-a-password.md +0 -54
- package/docs/guides/util/import-meta-dir.md +0 -13
- package/docs/guides/util/import-meta-file.md +0 -13
- package/docs/guides/util/import-meta-path.md +0 -13
- package/docs/guides/util/javascript-uuid.md +0 -23
- package/docs/guides/util/main.md +0 -32
- package/docs/guides/util/path-to-file-url.md +0 -14
- package/docs/guides/util/sleep.md +0 -22
- package/docs/guides/util/version.md +0 -21
- package/docs/guides/util/which-path-to-executable-bin.md +0 -15
- package/docs/guides/websocket/compression.md +0 -31
- package/docs/guides/websocket/context.md +0 -77
- package/docs/guides/websocket/pubsub.md +0 -41
- package/docs/guides/websocket/simple.md +0 -33
- package/docs/guides/write-file/append.md +0 -52
- package/docs/guides/write-file/basic.md +0 -44
- package/docs/guides/write-file/blob.md +0 -28
- package/docs/guides/write-file/cat.md +0 -17
- package/docs/guides/write-file/file-cp.md +0 -16
- package/docs/guides/write-file/filesink.md +0 -52
- package/docs/guides/write-file/response.md +0 -17
- package/docs/guides/write-file/stdout.md +0 -21
- package/docs/guides/write-file/stream.md +0 -17
- package/docs/guides/write-file/unlink.md +0 -16
- package/docs/index.md +0 -77
- package/docs/install/audit.md +0 -57
- package/docs/install/cache.md +0 -59
- package/docs/install/catalogs.md +0 -298
- package/docs/install/index.md +0 -248
- package/docs/install/isolated.md +0 -197
- package/docs/install/lifecycle.md +0 -46
- package/docs/install/lockfile.md +0 -58
- package/docs/install/npmrc.md +0 -105
- package/docs/install/overrides.md +0 -73
- package/docs/install/patch.md +0 -59
- package/docs/install/registries.md +0 -30
- package/docs/install/security-scanner-api.md +0 -81
- package/docs/install/workspaces.md +0 -114
- package/docs/installation.md +0 -327
- package/docs/project/asan.md +0 -124
- package/docs/project/benchmarking.md +0 -203
- package/docs/project/bindgen.md +0 -225
- package/docs/project/building-windows.md +0 -162
- package/docs/project/contributing.md +0 -347
- package/docs/project/internals/build-process-for-ci.md +0 -75
- package/docs/project/licensing.md +0 -73
- package/docs/project/roadmap.md +0 -87
- package/docs/quickstart.md +0 -157
- package/docs/runtime/autoimport.md +0 -94
- package/docs/runtime/bun-apis.md +0 -207
- package/docs/runtime/bunfig.md +0 -772
- package/docs/runtime/debugger.md +0 -325
- package/docs/runtime/env.md +0 -253
- package/docs/runtime/hot.md +0 -145
- package/docs/runtime/index.md +0 -312
- package/docs/runtime/jsx.md +0 -385
- package/docs/runtime/loaders.md +0 -130
- package/docs/runtime/modules.md +0 -320
- package/docs/runtime/nodejs-apis.md +0 -463
- package/docs/runtime/plugins.md +0 -561
- package/docs/runtime/shell.md +0 -605
- package/docs/runtime/typescript.md +0 -139
- package/docs/runtime/web-apis.md +0 -128
- package/docs/test/configuration.md +0 -154
- package/docs/test/coverage.md +0 -142
- package/docs/test/discovery.md +0 -85
- package/docs/test/dom.md +0 -75
- package/docs/test/examples/concurrent-test-glob.md +0 -132
- package/docs/test/hot.md +0 -15
- package/docs/test/lifecycle.md +0 -81
- package/docs/test/mocks.md +0 -313
- package/docs/test/reporters.md +0 -117
- package/docs/test/runtime-behavior.md +0 -95
- package/docs/test/snapshots.md +0 -68
- package/docs/test/time.md +0 -126
- package/docs/test/writing.md +0 -825
- package/docs/typescript.md +0 -53
package/docs/bundler/intro.md
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
<!-- This document is a work in progress. It's not currently included in the actual docs. -->
|
|
2
|
-
|
|
3
|
-
The goal of this document is to break down why bundling is necessary, how it works, and how the bundler became such a key part of modern JavaScript development. The content is not specific to Bun's bundler, but is rather aimed at anyone looking for a greater understanding of how bundlers work and, by extension, how most modern frameworks are implemented.
|
|
4
|
-
|
|
5
|
-
## What is bundling
|
|
6
|
-
|
|
7
|
-
With the adoption of ECMAScript modules (ESM), browsers can now resolve `import`/`export` statements in JavaScript files loaded via `<script>` tags.
|
|
8
|
-
|
|
9
|
-
{% codetabs %}
|
|
10
|
-
|
|
11
|
-
```html#index.html
|
|
12
|
-
<html>
|
|
13
|
-
<head>
|
|
14
|
-
<script type="module" src="/index.js" ></script>
|
|
15
|
-
</head>
|
|
16
|
-
</html>
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
```js#index.js
|
|
20
|
-
import {sayHello} from "./hello.js";
|
|
21
|
-
|
|
22
|
-
sayHello();
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
```js#hello.js
|
|
26
|
-
export function sayHello() {
|
|
27
|
-
console.log("Hello, world!");
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
{% /codetabs %}
|
|
32
|
-
|
|
33
|
-
When a user visits this website, the files are loaded in the following order:
|
|
34
|
-
|
|
35
|
-
{% image src="/images/module_loading_unbundled.png" /%}
|
|
36
|
-
|
|
37
|
-
{% callout %}
|
|
38
|
-
**Relative imports** — Relative imports are resolved relative to the URL of the importing file. Because we're importing `./hello.js` from `/index.js`, the browser resolves it to `/hello.js`. If instead we'd imported `./hello.js` from `/src/index.js`, the browser would have resolved it to `/src/hello.js`.
|
|
39
|
-
{% /callout %}
|
|
40
|
-
|
|
41
|
-
This approach works, it requires three round-trip HTTP requests before the browser is ready to render the page. On slow internet connections, this may add up to a non-trivial delay.
|
|
42
|
-
|
|
43
|
-
This example is extremely simplistic. A modern app may be loading dozens of modules from `node_modules`, each consisting of hundred of files. Loading each of these files with a separate HTTP request becomes untenable very quickly. While most of these requests will be running in parallel, the number of round-trip requests can still be very high; plus, there are limits on how many simultaneous requests a browser can make.
|
|
44
|
-
|
|
45
|
-
{% callout %}
|
|
46
|
-
Some recent advances like modulepreload and HTTP/3 are intended to solve some of these problems, but at the moment bundling is still the most performant approach.
|
|
47
|
-
{% /callout %}
|
|
48
|
-
|
|
49
|
-
The answer: bundling.
|
|
50
|
-
|
|
51
|
-
## Entrypoints
|
|
52
|
-
|
|
53
|
-
A bundler accepts an "entrypoint" to your source code (in this case, `/index.js`) and outputs a single file containing all of the code needed to run your app. If does so by parsing your source code, reading the `import`/`export` statements, and building a "module graph" of your app's dependencies.
|
|
54
|
-
|
|
55
|
-
{% image src="/images/bundling.png" /%}
|
|
56
|
-
|
|
57
|
-
We can now load `/bundle.js` from our `index.html` file and eliminate a round trip request, decreasing load times for our app.
|
|
58
|
-
|
|
59
|
-
{% image src="/images/module_loading_bundled.png" /%}
|
|
60
|
-
|
|
61
|
-
## Loaders
|
|
62
|
-
|
|
63
|
-
Bundlers typically have some set of built-in "loaders".
|
|
64
|
-
|
|
65
|
-
## Transpilation
|
|
66
|
-
|
|
67
|
-
The JavaScript files above are just that: plain JavaScript. They can be directly executed by any modern browser.
|
|
68
|
-
|
|
69
|
-
But modern tooling goes far beyond HTML, JavaScript, and CSS. JSX, TypeScript, and PostCSS/CSS-in-JS are all popular technologies that involve non-standard syntax that must be converted into vanilla JavaScript and CSS before if can be consumed by a browser.
|
|
70
|
-
|
|
71
|
-
## Chunking
|
|
72
|
-
|
|
73
|
-
## Module resolution
|
|
74
|
-
|
|
75
|
-
## Plugins
|
package/docs/bundler/loaders.md
DELETED
|
@@ -1,410 +0,0 @@
|
|
|
1
|
-
The Bun bundler implements a set of default loaders out of the box. As a rule of thumb, the bundler and the runtime both support the same set of file types out of the box.
|
|
2
|
-
|
|
3
|
-
`.js` `.cjs` `.mjs` `.mts` `.cts` `.ts` `.tsx` `.jsx` `.toml` `.json` `.yaml` `.yml` `.txt` `.wasm` `.node` `.html`
|
|
4
|
-
|
|
5
|
-
Bun uses the file extension to determine which built-in _loader_ should be used to parse the file. Every loader has a name, such as `js`, `tsx`, or `json`. These names are used when building [plugins](https://bun.com/docs/bundler/plugins) that extend Bun with custom loaders.
|
|
6
|
-
|
|
7
|
-
You can explicitly specify which loader to use using the 'loader' import attribute.
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
import my_toml from "./my_file" with { loader: "toml" };
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Built-in loaders
|
|
14
|
-
|
|
15
|
-
### `js`
|
|
16
|
-
|
|
17
|
-
**JavaScript**. Default for `.cjs` and `.mjs`.
|
|
18
|
-
|
|
19
|
-
Parses the code and applies a set of default transforms like dead-code elimination and tree shaking. Note that Bun does not attempt to down-convert syntax at the moment.
|
|
20
|
-
|
|
21
|
-
### `jsx`
|
|
22
|
-
|
|
23
|
-
**JavaScript + JSX.**. Default for `.js` and `.jsx`.
|
|
24
|
-
|
|
25
|
-
Same as the `js` loader, but JSX syntax is supported. By default, JSX is down-converted to plain JavaScript; the details of how this is done depends on the `jsx*` compiler options in your `tsconfig.json`. Refer to the TypeScript documentation [on JSX](https://www.typescriptlang.org/docs/handbook/jsx.html) for more information.
|
|
26
|
-
|
|
27
|
-
### `ts`
|
|
28
|
-
|
|
29
|
-
**TypeScript loader**. Default for `.ts`, `.mts`, and `.cts`.
|
|
30
|
-
|
|
31
|
-
Strips out all TypeScript syntax, then behaves identically to the `js` loader. Bun does not perform typechecking.
|
|
32
|
-
|
|
33
|
-
### `tsx`
|
|
34
|
-
|
|
35
|
-
**TypeScript + JSX loader**. Default for `.tsx`. Transpiles both TypeScript and JSX to vanilla JavaScript.
|
|
36
|
-
|
|
37
|
-
### `json`
|
|
38
|
-
|
|
39
|
-
**JSON loader**. Default for `.json`.
|
|
40
|
-
|
|
41
|
-
JSON files can be directly imported.
|
|
42
|
-
|
|
43
|
-
```ts
|
|
44
|
-
import pkg from "./package.json";
|
|
45
|
-
pkg.name; // => "my-package"
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
During bundling, the parsed JSON is inlined into the bundle as a JavaScript object.
|
|
49
|
-
|
|
50
|
-
```ts
|
|
51
|
-
var pkg = {
|
|
52
|
-
name: "my-package",
|
|
53
|
-
// ... other fields
|
|
54
|
-
};
|
|
55
|
-
pkg.name;
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
If a `.json` file is passed as an entrypoint to the bundler, it will be converted to a `.js` module that `export default`s the parsed object.
|
|
59
|
-
|
|
60
|
-
{% codetabs %}
|
|
61
|
-
|
|
62
|
-
```json#Input
|
|
63
|
-
{
|
|
64
|
-
"name": "John Doe",
|
|
65
|
-
"age": 35,
|
|
66
|
-
"email": "johndoe@example.com"
|
|
67
|
-
}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
```js#Output
|
|
71
|
-
export default {
|
|
72
|
-
name: "John Doe",
|
|
73
|
-
age: 35,
|
|
74
|
-
email: "johndoe@example.com"
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
{% /codetabs %}
|
|
79
|
-
|
|
80
|
-
### `toml`
|
|
81
|
-
|
|
82
|
-
**TOML loader**. Default for `.toml`.
|
|
83
|
-
|
|
84
|
-
TOML files can be directly imported. Bun will parse them with its fast native TOML parser.
|
|
85
|
-
|
|
86
|
-
```ts
|
|
87
|
-
import config from "./bunfig.toml";
|
|
88
|
-
config.logLevel; // => "debug"
|
|
89
|
-
|
|
90
|
-
// via import attribute:
|
|
91
|
-
// import myCustomTOML from './my.config' with {type: "toml"};
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
During bundling, the parsed TOML is inlined into the bundle as a JavaScript object.
|
|
95
|
-
|
|
96
|
-
```ts
|
|
97
|
-
var config = {
|
|
98
|
-
logLevel: "debug",
|
|
99
|
-
// ...other fields
|
|
100
|
-
};
|
|
101
|
-
config.logLevel;
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
If a `.toml` file is passed as an entrypoint, it will be converted to a `.js` module that `export default`s the parsed object.
|
|
105
|
-
|
|
106
|
-
{% codetabs %}
|
|
107
|
-
|
|
108
|
-
```toml#Input
|
|
109
|
-
name = "John Doe"
|
|
110
|
-
age = 35
|
|
111
|
-
email = "johndoe@example.com"
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
```js#Output
|
|
115
|
-
export default {
|
|
116
|
-
name: "John Doe",
|
|
117
|
-
age: 35,
|
|
118
|
-
email: "johndoe@example.com"
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
{% /codetabs %}
|
|
123
|
-
|
|
124
|
-
### `yaml`
|
|
125
|
-
|
|
126
|
-
**YAML loader**. Default for `.yaml` and `.yml`.
|
|
127
|
-
|
|
128
|
-
YAML files can be directly imported. Bun will parse them with its fast native YAML parser.
|
|
129
|
-
|
|
130
|
-
```ts
|
|
131
|
-
import config from "./config.yaml";
|
|
132
|
-
config.database.host; // => "localhost"
|
|
133
|
-
|
|
134
|
-
// via import attribute:
|
|
135
|
-
// import myCustomYAML from './my.config' with {type: "yaml"};
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
During bundling, the parsed YAML is inlined into the bundle as a JavaScript object.
|
|
139
|
-
|
|
140
|
-
```ts
|
|
141
|
-
var config = {
|
|
142
|
-
database: {
|
|
143
|
-
host: "localhost",
|
|
144
|
-
port: 5432,
|
|
145
|
-
},
|
|
146
|
-
// ...other fields
|
|
147
|
-
};
|
|
148
|
-
config.database.host;
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
If a `.yaml` or `.yml` file is passed as an entrypoint, it will be converted to a `.js` module that `export default`s the parsed object.
|
|
152
|
-
|
|
153
|
-
{% codetabs %}
|
|
154
|
-
|
|
155
|
-
```yaml#Input
|
|
156
|
-
name: John Doe
|
|
157
|
-
age: 35
|
|
158
|
-
email: johndoe@example.com
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
```js#Output
|
|
162
|
-
export default {
|
|
163
|
-
name: "John Doe",
|
|
164
|
-
age: 35,
|
|
165
|
-
email: "johndoe@example.com"
|
|
166
|
-
}
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
{% /codetabs %}
|
|
170
|
-
|
|
171
|
-
For more details on YAML support including the runtime API `Bun.YAML.parse()`, see the [YAML API documentation](/docs/api/yaml).
|
|
172
|
-
|
|
173
|
-
### `text`
|
|
174
|
-
|
|
175
|
-
**Text loader**. Default for `.txt`.
|
|
176
|
-
|
|
177
|
-
The contents of the text file are read and inlined into the bundle as a string.
|
|
178
|
-
Text files can be directly imported. The file is read and returned as a string.
|
|
179
|
-
|
|
180
|
-
```ts
|
|
181
|
-
import contents from "./file.txt";
|
|
182
|
-
console.log(contents); // => "Hello, world!"
|
|
183
|
-
|
|
184
|
-
// To import an html file as text
|
|
185
|
-
// The "type' attribute can be used to override the default loader.
|
|
186
|
-
import html from "./index.html" with { type: "text" };
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
When referenced during a build, the contents are inlined into the bundle as a string.
|
|
190
|
-
|
|
191
|
-
```ts
|
|
192
|
-
var contents = `Hello, world!`;
|
|
193
|
-
console.log(contents);
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
If a `.txt` file is passed as an entrypoint, it will be converted to a `.js` module that `export default`s the file contents.
|
|
197
|
-
|
|
198
|
-
{% codetabs %}
|
|
199
|
-
|
|
200
|
-
```txt#Input
|
|
201
|
-
Hello, world!
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
```js#Output
|
|
205
|
-
export default "Hello, world!";
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
{% /codetabs %}
|
|
209
|
-
|
|
210
|
-
### `napi`
|
|
211
|
-
|
|
212
|
-
**Native addon loader**. Default for `.node`.
|
|
213
|
-
|
|
214
|
-
In the runtime, native addons can be directly imported.
|
|
215
|
-
|
|
216
|
-
```ts
|
|
217
|
-
import addon from "./addon.node";
|
|
218
|
-
console.log(addon);
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
In the bundler, `.node` files are handled using the [`file`](#file) loader.
|
|
222
|
-
|
|
223
|
-
### `sqlite`
|
|
224
|
-
|
|
225
|
-
**SQLite loader**. `with { "type": "sqlite" }` import attribute
|
|
226
|
-
|
|
227
|
-
In the runtime and bundler, SQLite databases can be directly imported. This will load the database using [`bun:sqlite`](https://bun.com/docs/api/sqlite).
|
|
228
|
-
|
|
229
|
-
```ts
|
|
230
|
-
import db from "./my.db" with { type: "sqlite" };
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
This is only supported when the `target` is `bun`.
|
|
234
|
-
|
|
235
|
-
By default, the database is external to the bundle (so that you can potentially use a database loaded elsewhere), so the database file on-disk won't be bundled into the final output.
|
|
236
|
-
|
|
237
|
-
You can change this behavior with the `"embed"` attribute:
|
|
238
|
-
|
|
239
|
-
```ts
|
|
240
|
-
// embed the database into the bundle
|
|
241
|
-
import db from "./my.db" with { type: "sqlite", embed: "true" };
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
When using a [standalone executable](https://bun.com/docs/bundler/executables), the database is embedded into the single-file executable.
|
|
245
|
-
|
|
246
|
-
Otherwise, the database to embed is copied into the `outdir` with a hashed filename.
|
|
247
|
-
|
|
248
|
-
### `html`
|
|
249
|
-
|
|
250
|
-
The html loader processes HTML files and bundles any referenced assets. It will:
|
|
251
|
-
|
|
252
|
-
- Bundle and hash referenced JavaScript files (`<script src="...">`)
|
|
253
|
-
- Bundle and hash referenced CSS files (`<link rel="stylesheet" href="...">`)
|
|
254
|
-
- Hash referenced images (`<img src="...">`)
|
|
255
|
-
- Preserve external URLs (by default, anything starting with `http://` or `https://`)
|
|
256
|
-
|
|
257
|
-
For example, given this HTML file:
|
|
258
|
-
|
|
259
|
-
{% codetabs %}
|
|
260
|
-
|
|
261
|
-
```html#src/index.html
|
|
262
|
-
<!DOCTYPE html>
|
|
263
|
-
<html>
|
|
264
|
-
<body>
|
|
265
|
-
<img src="./image.jpg" alt="Local image">
|
|
266
|
-
<img src="https://example.com/image.jpg" alt="External image">
|
|
267
|
-
<script type="module" src="./script.js"></script>
|
|
268
|
-
</body>
|
|
269
|
-
</html>
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
{% /codetabs %}
|
|
273
|
-
|
|
274
|
-
It will output a new HTML file with the bundled assets:
|
|
275
|
-
|
|
276
|
-
{% codetabs %}
|
|
277
|
-
|
|
278
|
-
```html#dist/output.html
|
|
279
|
-
<!DOCTYPE html>
|
|
280
|
-
<html>
|
|
281
|
-
<body>
|
|
282
|
-
<img src="./image-HASHED.jpg" alt="Local image">
|
|
283
|
-
<img src="https://example.com/image.jpg" alt="External image">
|
|
284
|
-
<script type="module" src="./output-ALSO-HASHED.js"></script>
|
|
285
|
-
</body>
|
|
286
|
-
</html>
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
{% /codetabs %}
|
|
290
|
-
|
|
291
|
-
Under the hood, it uses [`lol-html`](https://github.com/cloudflare/lol-html) to extract script and link tags as entrypoints, and other assets as external.
|
|
292
|
-
|
|
293
|
-
Currently, the list of selectors is:
|
|
294
|
-
|
|
295
|
-
- `audio[src]`
|
|
296
|
-
- `iframe[src]`
|
|
297
|
-
- `img[src]`
|
|
298
|
-
- `img[srcset]`
|
|
299
|
-
- `link:not([rel~='stylesheet']):not([rel~='modulepreload']):not([rel~='manifest']):not([rel~='icon']):not([rel~='apple-touch-icon'])[href]`
|
|
300
|
-
- `link[as='font'][href], link[type^='font/'][href]`
|
|
301
|
-
- `link[as='image'][href]`
|
|
302
|
-
- `link[as='style'][href]`
|
|
303
|
-
- `link[as='video'][href], link[as='audio'][href]`
|
|
304
|
-
- `link[as='worker'][href]`
|
|
305
|
-
- `link[rel='icon'][href], link[rel='apple-touch-icon'][href]`
|
|
306
|
-
- `link[rel='manifest'][href]`
|
|
307
|
-
- `link[rel='stylesheet'][href]`
|
|
308
|
-
- `script[src]`
|
|
309
|
-
- `source[src]`
|
|
310
|
-
- `source[srcset]`
|
|
311
|
-
- `video[poster]`
|
|
312
|
-
- `video[src]`
|
|
313
|
-
|
|
314
|
-
{% callout %}
|
|
315
|
-
|
|
316
|
-
**HTML Loader Behavior in Different Contexts**
|
|
317
|
-
|
|
318
|
-
The `html` loader behaves differently depending on how it's used:
|
|
319
|
-
|
|
320
|
-
1. **Static Build:** When you run `bun build ./index.html`, Bun produces a static site with all assets bundled and hashed.
|
|
321
|
-
|
|
322
|
-
2. **Runtime:** When you run `bun run server.ts` (where `server.ts` imports an HTML file), Bun bundles assets on-the-fly during development, enabling features like hot module replacement.
|
|
323
|
-
|
|
324
|
-
3. **Full-stack Build:** When you run `bun build --target=bun server.ts` (where `server.ts` imports an HTML file), the import resolves to a manifest object that `Bun.serve` uses to efficiently serve pre-bundled assets in production.
|
|
325
|
-
|
|
326
|
-
{% /callout %}
|
|
327
|
-
|
|
328
|
-
### `sh` loader
|
|
329
|
-
|
|
330
|
-
**Bun Shell loader**. Default for `.sh` files
|
|
331
|
-
|
|
332
|
-
This loader is used to parse [Bun Shell](https://bun.com/docs/runtime/shell) scripts. It's only supported when starting Bun itself, so it's not available in the bundler or in the runtime.
|
|
333
|
-
|
|
334
|
-
```sh
|
|
335
|
-
$ bun run ./script.sh
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
### `file`
|
|
339
|
-
|
|
340
|
-
**File loader**. Default for all unrecognized file types.
|
|
341
|
-
|
|
342
|
-
The file loader resolves the import as a _path/URL_ to the imported file. It's commonly used for referencing media or font assets.
|
|
343
|
-
|
|
344
|
-
```ts#logo.ts
|
|
345
|
-
import logo from "./logo.svg";
|
|
346
|
-
console.log(logo);
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
_In the runtime_, Bun checks that the `logo.svg` file exists and converts it to an absolute path to the location of `logo.svg` on disk.
|
|
350
|
-
|
|
351
|
-
```bash
|
|
352
|
-
$ bun run logo.ts
|
|
353
|
-
/path/to/project/logo.svg
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
_In the bundler_, things are slightly different. The file is copied into `outdir` as-is, and the import is resolved as a relative path pointing to the copied file.
|
|
357
|
-
|
|
358
|
-
```ts#Output
|
|
359
|
-
var logo = "./logo.svg";
|
|
360
|
-
console.log(logo);
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
If a value is specified for `publicPath`, the import will use value as a prefix to construct an absolute path/URL.
|
|
364
|
-
|
|
365
|
-
{% table %}
|
|
366
|
-
|
|
367
|
-
- Public path
|
|
368
|
-
- Resolved import
|
|
369
|
-
|
|
370
|
-
---
|
|
371
|
-
|
|
372
|
-
- `""` (default)
|
|
373
|
-
- `/logo.svg`
|
|
374
|
-
|
|
375
|
-
---
|
|
376
|
-
|
|
377
|
-
- `"/assets"`
|
|
378
|
-
- `/assets/logo.svg`
|
|
379
|
-
|
|
380
|
-
---
|
|
381
|
-
|
|
382
|
-
- `"https://cdn.example.com/"`
|
|
383
|
-
- `https://cdn.example.com/logo.svg`
|
|
384
|
-
|
|
385
|
-
{% /table %}
|
|
386
|
-
|
|
387
|
-
{% callout %}
|
|
388
|
-
The location and file name of the copied file is determined by the value of [`naming.asset`](https://bun.com/docs/bundler#naming).
|
|
389
|
-
{% /callout %}
|
|
390
|
-
This loader is copied into the `outdir` as-is. The name of the copied file is determined using the value of `naming.asset`.
|
|
391
|
-
|
|
392
|
-
{% details summary="Fixing TypeScript import errors" %}
|
|
393
|
-
If you're using TypeScript, you may get an error like this:
|
|
394
|
-
|
|
395
|
-
```ts
|
|
396
|
-
// TypeScript error
|
|
397
|
-
// Cannot find module './logo.svg' or its corresponding type declarations.
|
|
398
|
-
```
|
|
399
|
-
|
|
400
|
-
This can be fixed by creating `*.d.ts` file anywhere in your project (any name will work) with the following contents:
|
|
401
|
-
|
|
402
|
-
```ts
|
|
403
|
-
declare module "*.svg" {
|
|
404
|
-
const content: string;
|
|
405
|
-
export default content;
|
|
406
|
-
}
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
This tells TypeScript that any default imports from `.svg` should be treated as a string.
|
|
410
|
-
{% /details %}
|