bun-types 1.3.2-canary.20251105T140650 → 1.3.2-canary.20251108T140624
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 +102 -6
- package/docs/README.md +28 -0
- package/docs/bundler/bytecode.mdx +465 -0
- package/docs/bundler/{css.md → css.mdx} +97 -101
- package/docs/bundler/esbuild.mdx +253 -0
- package/docs/bundler/{executables.md → executables.mdx} +130 -221
- package/docs/bundler/fullstack.mdx +1064 -0
- package/docs/bundler/{hmr.md → hot-reloading.mdx} +74 -79
- package/docs/bundler/{html.md → html-static.mdx} +148 -111
- package/docs/bundler/index.mdx +1499 -0
- package/docs/bundler/loaders.mdx +356 -0
- package/docs/bundler/{macros.md → macros.mdx} +83 -84
- package/docs/bundler/minifier.mdx +1306 -0
- package/docs/bundler/plugins.mdx +411 -0
- package/docs/feedback.mdx +85 -0
- package/docs/guides/binary/{arraybuffer-to-array.md → arraybuffer-to-array.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-blob.md → arraybuffer-to-blob.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-buffer.md → arraybuffer-to-buffer.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-string.md → arraybuffer-to-string.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-typedarray.md → arraybuffer-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{blob-to-arraybuffer.md → blob-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{blob-to-dataview.md → blob-to-dataview.mdx} +3 -1
- package/docs/guides/binary/{blob-to-stream.md → blob-to-stream.mdx} +3 -1
- package/docs/guides/binary/{blob-to-string.md → blob-to-string.mdx} +3 -1
- package/docs/guides/binary/{blob-to-typedarray.md → blob-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-arraybuffer.md → buffer-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-blob.md → buffer-to-blob.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-readablestream.md → buffer-to-readablestream.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-string.md → buffer-to-string.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-typedarray.md → buffer-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{dataview-to-string.md → dataview-to-string.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-arraybuffer.md → typedarray-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-blob.md → typedarray-to-blob.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-buffer.md → typedarray-to-buffer.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-dataview.md → typedarray-to-dataview.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-string.md → typedarray-to-string.mdx} +3 -1
- package/docs/guides/deployment/aws-lambda.mdx +204 -0
- package/docs/guides/deployment/digital-ocean.mdx +161 -0
- package/docs/guides/deployment/google-cloud-run.mdx +197 -0
- package/docs/guides/deployment/{railway.md → railway.mdx} +42 -54
- package/docs/guides/deployment/render.mdx +82 -0
- package/docs/guides/deployment/vercel.mdx +99 -0
- package/docs/guides/ecosystem/{astro.md → astro.mdx} +16 -6
- package/docs/guides/ecosystem/{discordjs.md → discordjs.mdx} +21 -18
- package/docs/guides/ecosystem/{docker.md → docker.mdx} +25 -14
- package/docs/guides/ecosystem/{drizzle.md → drizzle.mdx} +32 -22
- package/docs/guides/ecosystem/{edgedb.md → edgedb.mdx} +63 -34
- package/docs/guides/ecosystem/{elysia.md → elysia.mdx} +11 -11
- package/docs/guides/ecosystem/{express.md → express.mdx} +12 -9
- package/docs/guides/ecosystem/{hono.md → hono.mdx} +16 -8
- package/docs/guides/ecosystem/{mongoose.md → mongoose.mdx} +26 -21
- package/docs/guides/ecosystem/{neon-drizzle.md → neon-drizzle.mdx} +49 -35
- package/docs/guides/ecosystem/{neon-serverless-postgres.md → neon-serverless-postgres.mdx} +16 -11
- package/docs/guides/ecosystem/{nextjs.md → nextjs.mdx} +18 -10
- package/docs/guides/ecosystem/{nuxt.md → nuxt.mdx} +45 -11
- package/docs/guides/ecosystem/{pm2.md → pm2.mdx} +7 -9
- package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
- package/docs/guides/ecosystem/prisma.mdx +164 -0
- package/docs/guides/ecosystem/{qwik.md → qwik.mdx} +18 -11
- package/docs/guides/ecosystem/{react.md → react.mdx} +9 -7
- package/docs/guides/ecosystem/{remix.md → remix.mdx} +45 -26
- package/docs/guides/ecosystem/{sentry.md → sentry.mdx} +7 -5
- package/docs/guides/ecosystem/{solidstart.md → solidstart.mdx} +21 -13
- package/docs/guides/ecosystem/{ssr-react.md → ssr-react.mdx} +9 -11
- package/docs/guides/ecosystem/{stric.md → stric.mdx} +16 -17
- package/docs/guides/ecosystem/{sveltekit.md → sveltekit.mdx} +42 -29
- package/docs/guides/ecosystem/{systemd.md → systemd.mdx} +27 -26
- package/docs/guides/ecosystem/upstash.mdx +87 -0
- package/docs/guides/ecosystem/{vite.md → vite.mdx} +20 -14
- package/docs/guides/html-rewriter/{extract-links.md → extract-links.mdx} +11 -7
- package/docs/guides/html-rewriter/{extract-social-meta.md → extract-social-meta.mdx} +6 -2
- package/docs/guides/http/{cluster.md → cluster.mdx} +10 -7
- package/docs/guides/http/{fetch-unix.md → fetch-unix.mdx} +5 -3
- package/docs/guides/http/{fetch.md → fetch.mdx} +5 -3
- package/docs/guides/http/{file-uploads.md → file-uploads.mdx} +18 -15
- package/docs/guides/http/{hot.md → hot.mdx} +9 -7
- package/docs/guides/http/{proxy.md → proxy.mdx} +7 -5
- package/docs/guides/http/{server.md → server.mdx} +4 -2
- package/docs/guides/http/{simple.md → simple.mdx} +4 -2
- package/docs/guides/http/{stream-file.md → stream-file.mdx} +6 -4
- package/docs/guides/http/{stream-iterator.md → stream-iterator.mdx} +5 -3
- package/docs/guides/http/{stream-node-streams-in-bun.md → stream-node-streams-in-bun.mdx} +4 -2
- package/docs/guides/http/{tls.md → tls.mdx} +5 -3
- package/docs/guides/index.mdx +10 -0
- package/docs/guides/install/{add-dev.md → add-dev.mdx} +8 -6
- package/docs/guides/install/add-git.mdx +38 -0
- package/docs/guides/install/{add-optional.md → add-optional.mdx} +7 -5
- package/docs/guides/install/{add-peer.md → add-peer.mdx} +13 -11
- package/docs/guides/install/{add-tarball.md → add-tarball.mdx} +7 -5
- package/docs/guides/install/{add.md → add.mdx} +12 -10
- package/docs/guides/install/{azure-artifacts.md → azure-artifacts.mdx} +15 -12
- package/docs/guides/{runtime/cicd.md → install/cicd.mdx} +13 -13
- package/docs/guides/install/{custom-registry.md → custom-registry.mdx} +6 -4
- package/docs/guides/install/{from-npm-install-to-bun-install.md → from-npm-install-to-bun-install.mdx} +50 -34
- package/docs/guides/install/{git-diff-bun-lockfile.md → git-diff-bun-lockfile.mdx} +14 -11
- package/docs/guides/install/{jfrog-artifactory.md → jfrog-artifactory.mdx} +4 -4
- package/docs/guides/install/{npm-alias.md → npm-alias.mdx} +6 -4
- package/docs/guides/install/{registry-scope.md → registry-scope.mdx} +6 -4
- package/docs/guides/install/{trusted.md → trusted.mdx} +22 -18
- package/docs/guides/install/{workspaces.md → workspaces.mdx} +13 -13
- package/docs/guides/install/{yarnlock.md → yarnlock.mdx} +15 -9
- package/docs/guides/process/{argv.md → argv.mdx} +17 -9
- package/docs/guides/process/{ctrl-c.md → ctrl-c.mdx} +4 -2
- package/docs/guides/process/{ipc.md → ipc.mdx} +13 -10
- package/docs/guides/process/{nanoseconds.md → nanoseconds.mdx} +3 -1
- package/docs/guides/process/{os-signals.md → os-signals.mdx} +3 -1
- package/docs/guides/process/{spawn-stderr.md → spawn-stderr.mdx} +4 -1
- package/docs/guides/process/{spawn-stdout.md → spawn-stdout.mdx} +3 -1
- package/docs/guides/process/{spawn.md → spawn.mdx} +3 -1
- package/docs/guides/process/{stdin.md → stdin.mdx} +15 -7
- package/docs/guides/read-file/{arraybuffer.md → arraybuffer.mdx} +5 -3
- package/docs/guides/read-file/{buffer.md → buffer.mdx} +4 -2
- package/docs/guides/read-file/{exists.md → exists.mdx} +4 -2
- package/docs/guides/read-file/{json.md → json.mdx} +4 -2
- package/docs/guides/read-file/{mime.md → mime.mdx} +3 -1
- package/docs/guides/read-file/{stream.md → stream.mdx} +3 -1
- package/docs/guides/read-file/{string.md → string.mdx} +3 -1
- package/docs/guides/read-file/{uint8array.md → uint8array.mdx} +3 -1
- package/docs/guides/read-file/{watch.md → watch.mdx} +6 -8
- package/docs/guides/runtime/{build-time-constants.md → build-time-constants.mdx} +24 -22
- package/docs/guides/{install/cicd.md → runtime/cicd.mdx} +11 -7
- package/docs/guides/runtime/{codesign-macos-executable.md → codesign-macos-executable.mdx} +14 -9
- package/docs/guides/runtime/{define-constant.md → define-constant.mdx} +20 -16
- package/docs/guides/runtime/{delete-directory.md → delete-directory.mdx} +5 -3
- package/docs/guides/runtime/{delete-file.md → delete-file.mdx} +4 -2
- package/docs/guides/runtime/{heap-snapshot.md → heap-snapshot.mdx} +5 -3
- package/docs/guides/runtime/{import-html.md → import-html.mdx} +4 -2
- package/docs/guides/runtime/{import-json.md → import-json.mdx} +6 -4
- package/docs/guides/runtime/{import-toml.md → import-toml.mdx} +5 -3
- package/docs/guides/runtime/{import-yaml.md → import-yaml.mdx} +9 -7
- package/docs/guides/runtime/{read-env.md → read-env.mdx} +10 -5
- package/docs/guides/runtime/{set-env.md → set-env.mdx} +14 -10
- package/docs/guides/runtime/{shell.md → shell.mdx} +6 -4
- package/docs/guides/runtime/{timezone.md → timezone.mdx} +10 -7
- package/docs/guides/runtime/{tsconfig-paths.md → tsconfig-paths.mdx} +5 -3
- package/docs/guides/runtime/{typescript.md → typescript.mdx} +8 -6
- package/docs/guides/runtime/{vscode-debugger.md → vscode-debugger.mdx} +12 -11
- package/docs/guides/runtime/{web-debugger.md → web-debugger.mdx} +39 -18
- package/docs/guides/streams/{node-readable-to-arraybuffer.md → node-readable-to-arraybuffer.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-blob.md → node-readable-to-blob.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-json.md → node-readable-to-json.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-string.md → node-readable-to-string.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-uint8array.md → node-readable-to-uint8array.mdx} +3 -1
- package/docs/guides/streams/{to-array.md → to-array.mdx} +3 -1
- package/docs/guides/streams/{to-arraybuffer.md → to-arraybuffer.mdx} +3 -1
- package/docs/guides/streams/{to-blob.md → to-blob.mdx} +3 -1
- package/docs/guides/streams/{to-buffer.md → to-buffer.mdx} +3 -1
- package/docs/guides/streams/{to-json.md → to-json.mdx} +4 -2
- package/docs/guides/streams/{to-string.md → to-string.mdx} +3 -1
- package/docs/guides/streams/{to-typedarray.md → to-typedarray.mdx} +3 -1
- package/docs/guides/test/{bail.md → bail.mdx} +7 -5
- package/docs/guides/test/{coverage-threshold.md → coverage-threshold.mdx} +14 -7
- package/docs/guides/test/{coverage.md → coverage.mdx} +9 -4
- package/docs/guides/test/{happy-dom.md → happy-dom.mdx} +13 -8
- package/docs/guides/test/{migrate-from-jest.md → migrate-from-jest.mdx} +19 -37
- package/docs/guides/test/{mock-clock.md → mock-clock.mdx} +3 -1
- package/docs/guides/test/{mock-functions.md → mock-functions.mdx} +7 -5
- package/docs/guides/test/{rerun-each.md → rerun-each.mdx} +5 -3
- package/docs/guides/test/{run-tests.md → run-tests.mdx} +16 -11
- package/docs/guides/test/{skip-tests.md → skip-tests.mdx} +8 -4
- package/docs/guides/test/{snapshot.md → snapshot.mdx} +20 -13
- package/docs/guides/test/spy-on.mdx +49 -0
- package/docs/guides/test/{svelte-test.md → svelte-test.mdx} +16 -23
- package/docs/guides/test/{testing-library.md → testing-library.mdx} +18 -17
- package/docs/guides/test/{timeout.md → timeout.mdx} +5 -3
- package/docs/guides/test/{todo-tests.md → todo-tests.mdx} +13 -6
- package/docs/guides/test/{update-snapshots.md → update-snapshots.mdx} +9 -6
- package/docs/guides/test/{watch-mode.md → watch-mode.mdx} +9 -4
- package/docs/guides/util/{base64.md → base64.mdx} +3 -1
- package/docs/guides/util/{deep-equals.md → deep-equals.mdx} +5 -3
- package/docs/guides/util/{deflate.md → deflate.mdx} +3 -1
- package/docs/guides/util/{detect-bun.md → detect-bun.mdx} +3 -1
- package/docs/guides/util/{entrypoint.md → entrypoint.mdx} +4 -2
- package/docs/guides/util/{escape-html.md → escape-html.mdx} +3 -1
- package/docs/guides/util/{file-url-to-path.md → file-url-to-path.mdx} +3 -1
- package/docs/guides/util/{gzip.md → gzip.mdx} +3 -1
- package/docs/guides/util/{hash-a-password.md → hash-a-password.mdx} +3 -1
- package/docs/guides/util/{import-meta-dir.md → import-meta-dir.mdx} +4 -2
- package/docs/guides/util/{import-meta-file.md → import-meta-file.mdx} +4 -2
- package/docs/guides/util/{import-meta-path.md → import-meta-path.mdx} +4 -2
- package/docs/guides/util/{javascript-uuid.md → javascript-uuid.mdx} +3 -1
- package/docs/guides/util/{main.md → main.mdx} +19 -8
- package/docs/guides/util/{path-to-file-url.md → path-to-file-url.mdx} +3 -1
- package/docs/guides/util/{sleep.md → sleep.mdx} +3 -1
- package/docs/guides/util/{version.md → version.mdx} +6 -4
- package/docs/guides/util/{which-path-to-executable-bin.md → which-path-to-executable-bin.mdx} +4 -2
- package/docs/guides/websocket/{compression.md → compression.mdx} +5 -3
- package/docs/guides/websocket/{context.md → context.mdx} +9 -12
- package/docs/guides/websocket/{pubsub.md → pubsub.mdx} +5 -6
- package/docs/guides/websocket/{simple.md → simple.mdx} +5 -3
- package/docs/guides/write-file/{append.md → append.mdx} +3 -1
- package/docs/guides/write-file/{basic.md → basic.mdx} +3 -1
- package/docs/guides/write-file/{blob.md → blob.mdx} +3 -1
- package/docs/guides/write-file/{cat.md → cat.mdx} +4 -2
- package/docs/guides/write-file/{file-cp.md → file-cp.mdx} +3 -1
- package/docs/guides/write-file/{filesink.md → filesink.mdx} +3 -1
- package/docs/guides/write-file/{response.md → response.mdx} +3 -1
- package/docs/guides/write-file/{stdout.md → stdout.mdx} +3 -1
- package/docs/guides/write-file/{stream.md → stream.mdx} +3 -1
- package/docs/guides/write-file/{unlink.md → unlink.mdx} +3 -1
- package/docs/{index.md → index.mdx} +97 -41
- package/docs/installation.mdx +365 -0
- package/docs/{cli/bunx.md → pm/bunx.mdx} +25 -31
- package/docs/{install/catalogs.md → pm/catalogs.mdx} +18 -24
- package/docs/{cli/add.md → pm/cli/add.mdx} +61 -55
- package/docs/{install/audit.md → pm/cli/audit.mdx} +11 -8
- package/docs/{cli/install.md → pm/cli/install.mdx} +208 -81
- package/docs/{cli/link.md → pm/cli/link.mdx} +27 -19
- package/docs/{cli/outdated.md → pm/cli/outdated.mdx} +119 -12
- package/docs/{install/patch.md → pm/cli/patch.mdx} +25 -15
- package/docs/{cli/pm.md → pm/cli/pm.mdx} +96 -62
- package/docs/{cli/publish.md → pm/cli/publish.mdx} +38 -35
- package/docs/pm/cli/remove.mdx +16 -0
- package/docs/{cli/update.md → pm/cli/update.mdx} +26 -15
- package/docs/{cli/why.md → pm/cli/why.mdx} +27 -10
- package/docs/{cli/filter.md → pm/filter.mdx} +26 -14
- package/docs/{install/cache.md → pm/global-cache.mdx} +25 -12
- package/docs/{install/isolated.md → pm/isolated-installs.mdx} +32 -24
- package/docs/{install/lifecycle.md → pm/lifecycle.mdx} +20 -9
- package/docs/{install/lockfile.md → pm/lockfile.mdx} +18 -12
- package/docs/{install/npmrc.md → pm/npmrc.mdx} +30 -24
- package/docs/{install/overrides.md → pm/overrides.mdx} +47 -37
- package/docs/{install/registries.md → pm/scopes-registries.mdx} +8 -3
- package/docs/{install/security-scanner-api.md → pm/security-scanner-api.mdx} +22 -8
- package/docs/{install/workspaces.md → pm/workspaces.mdx} +17 -22
- package/docs/project/{benchmarking.md → benchmarking.mdx} +26 -11
- package/docs/project/{bindgen.md → bindgen.mdx} +12 -14
- package/docs/project/{building-windows.md → building-windows.mdx} +18 -47
- package/docs/project/{contributing.md → contributing.mdx} +56 -60
- package/docs/project/feedback.mdx +20 -0
- package/docs/project/license.mdx +78 -0
- package/docs/project/roadmap.mdx +8 -0
- package/docs/quickstart.mdx +240 -0
- package/docs/runtime/{autoimport.md → auto-install.mdx} +34 -31
- package/docs/{api/binary-data.md → runtime/binary-data.mdx} +77 -269
- package/docs/runtime/bun-apis.mdx +59 -0
- package/docs/runtime/{bunfig.md → bunfig.mdx} +95 -225
- package/docs/{api/cc.md → runtime/c-compiler.mdx} +16 -9
- package/docs/{api/spawn.md → runtime/child-process.mdx} +69 -119
- package/docs/{api/color.md → runtime/color.mdx} +6 -1
- package/docs/{api/console.md → runtime/console.mdx} +17 -7
- package/docs/{api/cookie.md → runtime/cookies.mdx} +24 -19
- package/docs/runtime/{debugger.md → debugger.mdx} +61 -51
- package/docs/runtime/environment-variables.mdx +214 -0
- package/docs/{api/ffi.md → runtime/ffi.mdx} +53 -45
- package/docs/{api/file-io.md → runtime/file-io.mdx} +41 -101
- package/docs/{api/file-system-router.md → runtime/file-system-router.mdx} +8 -2
- package/docs/{bundler/loaders.md → runtime/file-types.mdx} +56 -112
- package/docs/{api/glob.md → runtime/glob.mdx} +4 -1
- package/docs/runtime/globals.mdx +72 -0
- package/docs/{api/hashing.md → runtime/hashing.mdx} +18 -22
- package/docs/{api/html-rewriter.md → runtime/html-rewriter.mdx} +36 -30
- package/docs/runtime/http/cookies.mdx +79 -0
- package/docs/runtime/http/error-handling.mdx +40 -0
- package/docs/runtime/http/metrics.mdx +36 -0
- package/docs/runtime/http/routing.mdx +289 -0
- package/docs/runtime/http/server.mdx +647 -0
- package/docs/runtime/http/tls.mdx +101 -0
- package/docs/{api/websockets.md → runtime/http/websockets.mdx} +62 -231
- package/docs/{cli/run.md → runtime/index.mdx} +70 -108
- package/docs/runtime/jsx.mdx +115 -0
- package/docs/runtime/{modules.md → module-resolution.mdx} +83 -61
- package/docs/{api/dns.md → runtime/networking/dns.mdx} +23 -22
- package/docs/{api/fetch.md → runtime/networking/fetch.mdx} +10 -5
- package/docs/{api/tcp.md → runtime/networking/tcp.mdx} +59 -41
- package/docs/{api/udp.md → runtime/networking/udp.mdx} +14 -8
- package/docs/{api/node-api.md → runtime/node-api.mdx} +5 -0
- package/docs/runtime/{nodejs-apis.md → nodejs-compat.mdx} +9 -4
- package/docs/{bundler/plugins.md → runtime/plugins.mdx} +17 -61
- package/docs/{api/redis.md → runtime/redis.mdx} +65 -80
- package/docs/{api/s3.md → runtime/s3.mdx} +79 -66
- package/docs/{api/secrets.md → runtime/secrets.mdx} +27 -10
- package/docs/{api/semver.md → runtime/semver.mdx} +9 -4
- package/docs/runtime/{shell.md → shell.mdx} +52 -20
- package/docs/{api/sql.md → runtime/sql.mdx} +129 -99
- package/docs/{api/sqlite.md → runtime/sqlite.mdx} +162 -157
- package/docs/{api/streams.md → runtime/streams.mdx} +33 -31
- package/docs/{cli/bun-create.md → runtime/templating/create.mdx} +74 -143
- package/docs/{cli/init.md → runtime/templating/init.mdx} +24 -51
- package/docs/{api/transpiler.md → runtime/transpiler.mdx} +50 -38
- package/docs/{typescript.md → runtime/typescript.mdx} +7 -2
- package/docs/{api/utils.md → runtime/utils.mdx} +81 -50
- package/docs/runtime/{hot.md → watch-mode.mdx} +53 -37
- package/docs/runtime/web-apis.mdx +29 -0
- package/docs/{api/workers.md → runtime/workers.mdx} +28 -22
- package/docs/{api/yaml.md → runtime/yaml.mdx} +33 -232
- package/docs/snippets/cli/add.mdx +166 -0
- package/docs/snippets/cli/build.mdx +196 -0
- package/docs/snippets/cli/feedback.mdx +17 -0
- package/docs/snippets/cli/init.mdx +84 -0
- package/docs/snippets/cli/install.mdx +173 -0
- package/docs/snippets/cli/link.mdx +163 -0
- package/docs/snippets/cli/outdated.mdx +140 -0
- package/docs/snippets/cli/patch.mdx +171 -0
- package/docs/snippets/cli/publish.mdx +198 -0
- package/docs/snippets/cli/remove.mdx +146 -0
- package/docs/snippets/cli/run.mdx +293 -0
- package/docs/snippets/cli/test.mdx +100 -0
- package/docs/snippets/cli/update.mdx +144 -0
- package/docs/snippets/product-card.mdx +32 -0
- package/docs/snippets/product-tiles.mdx +94 -0
- package/docs/test/code-coverage.mdx +409 -0
- package/docs/test/configuration.mdx +467 -0
- package/docs/test/{time.md → dates-times.mdx} +23 -20
- package/docs/test/{discovery.md → discovery.mdx} +15 -10
- package/docs/test/dom.mdx +226 -0
- package/docs/{cli/test.md → test/index.mdx} +77 -94
- package/docs/test/lifecycle.mdx +348 -0
- package/docs/test/mocks.mdx +637 -0
- package/docs/test/{reporters.md → reporters.mdx} +15 -15
- package/docs/test/runtime-behavior.mdx +342 -0
- package/docs/test/snapshots.mdx +434 -0
- package/docs/test/writing-tests.mdx +635 -0
- package/docs/typescript.mdx +54 -0
- package/package.json +8 -6
- package/test.d.ts +2 -2
- package/docs/api/file.md +0 -19
- package/docs/api/globals.md +0 -387
- package/docs/api/http.md +0 -1408
- package/docs/api/import-meta.md +0 -69
- package/docs/benchmarks.md +0 -120
- package/docs/bun-flavored-toml.md +0 -42
- package/docs/bundler/css_modules.md +0 -145
- package/docs/bundler/fullstack.md +0 -418
- package/docs/bundler/index.md +0 -1735
- package/docs/bundler/intro.md +0 -75
- package/docs/bundler/vs-esbuild.md +0 -1127
- package/docs/cli/bun-completions.md +0 -3
- package/docs/cli/bun-install.md +0 -349
- package/docs/cli/bun-upgrade.md +0 -39
- package/docs/cli/info.md +0 -65
- package/docs/cli/patch-commit.md +0 -11
- package/docs/cli/remove.md +0 -7
- package/docs/cli/unlink.md +0 -9
- 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/ecosystem/prisma.md +0 -141
- package/docs/guides/ecosystem/render.md +0 -79
- package/docs/guides/install/add-git.md +0 -36
- package/docs/guides/test/spy-on.md +0 -46
- package/docs/install/index.md +0 -248
- package/docs/installation.md +0 -327
- package/docs/project/asan.md +0 -124
- 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/bun-apis.md +0 -207
- package/docs/runtime/env.md +0 -253
- package/docs/runtime/index.md +0 -312
- package/docs/runtime/jsx.md +0 -385
- package/docs/runtime/loaders.md +0 -130
- package/docs/runtime/plugins.md +0 -561
- 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/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/runtime-behavior.md +0 -95
- package/docs/test/snapshots.md +0 -68
- package/docs/test/writing.md +0 -825
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: "Debugging"
|
|
3
|
+
description: "Debug your Bun code with an interactive debugger using WebKit Inspector Protocol"
|
|
3
4
|
---
|
|
4
5
|
|
|
5
6
|
Bun speaks the [WebKit Inspector Protocol](https://github.com/oven-sh/bun/blob/main/packages/bun-inspector-protocol/src/protocol/jsc/index.d.ts), so you can debug your code with an interactive debugger. For demonstration purposes, consider the following simple web server.
|
|
6
7
|
|
|
7
8
|
## Debugging JavaScript and TypeScript
|
|
8
9
|
|
|
9
|
-
```
|
|
10
|
+
```typescript icon="/icons/typescript.svg" title="server.ts"
|
|
10
11
|
Bun.serve({
|
|
11
|
-
fetch(req){
|
|
12
|
+
fetch(req) {
|
|
12
13
|
console.log(req.url);
|
|
13
14
|
return new Response("Hello, world!");
|
|
14
|
-
}
|
|
15
|
-
})
|
|
15
|
+
},
|
|
16
|
+
});
|
|
16
17
|
```
|
|
17
18
|
|
|
18
19
|
### `--inspect`
|
|
19
20
|
|
|
20
21
|
To enable debugging when running code with Bun, use the `--inspect` flag. This automatically starts a WebSocket server on an available port that can be used to introspect the running Bun process.
|
|
21
22
|
|
|
22
|
-
```sh
|
|
23
|
-
|
|
23
|
+
```sh icon="terminal" title="terminal"
|
|
24
|
+
bun --inspect server.ts
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
```txt id="terminal"
|
|
24
28
|
------------------ Bun Inspector ------------------
|
|
25
29
|
Listening at:
|
|
26
30
|
ws://localhost:6499/0tqxs9exrgrm
|
|
@@ -42,12 +46,14 @@ The `--inspect-wait` flag behaves identically to `--inspect`, except the code wi
|
|
|
42
46
|
|
|
43
47
|
Regardless of which flag you use, you can optionally specify a port number, URL prefix, or both.
|
|
44
48
|
|
|
45
|
-
```sh
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
```sh icon="terminal" title="terminal"
|
|
50
|
+
bun --inspect=4000 server.ts
|
|
51
|
+
bun --inspect=localhost:4000 server.ts
|
|
52
|
+
bun --inspect=localhost:4000/prefix server.ts
|
|
49
53
|
```
|
|
50
54
|
|
|
55
|
+
---
|
|
56
|
+
|
|
51
57
|
## Debuggers
|
|
52
58
|
|
|
53
59
|
Various debugging tools can connect to this server to provide an interactive debugging experience.
|
|
@@ -58,43 +64,61 @@ Bun hosts a web-based debugger at [debug.bun.sh](https://debug.bun.sh). It is a
|
|
|
58
64
|
|
|
59
65
|
Open the provided `debug.bun.sh` URL in your browser to start a debugging session. From this interface, you'll be able to view the source code of the running file, view and set breakpoints, and execute code with the built-in console.
|
|
60
66
|
|
|
61
|
-
|
|
67
|
+
<Frame>
|
|
68
|
+

|
|
70
|
+
</Frame>
|
|
62
71
|
|
|
63
72
|
Let's set a breakpoint. Navigate to the Sources tab; you should see the code from earlier. Click on the line number `3` to set a breakpoint on our `console.log(req.url)` statement.
|
|
64
73
|
|
|
65
|
-
|
|
74
|
+
<Frame>
|
|
75
|
+

|
|
76
|
+
</Frame>
|
|
66
77
|
|
|
67
78
|
Then visit [`http://localhost:3000`](http://localhost:3000) in your web browser. This will send an HTTP request to our `localhost` web server. It will seem like the page isn't loading. Why? Because the program has paused execution at the breakpoint we set earlier.
|
|
68
79
|
|
|
69
80
|
Note how the UI has changed.
|
|
70
81
|
|
|
71
|
-
|
|
82
|
+
<Frame>
|
|
83
|
+

|
|
84
|
+
</Frame>
|
|
72
85
|
|
|
73
86
|
At this point there's a lot we can do to introspect the current execution environment. We can use the console at the bottom to run arbitrary code in the context of the program, with full access to the variables in scope at our breakpoint.
|
|
74
87
|
|
|
75
|
-
|
|
88
|
+
<Frame>
|
|
89
|
+

|
|
90
|
+
</Frame>
|
|
76
91
|
|
|
77
92
|
On the right side of the Sources pane, we can see all local variables currently in scope, and drill down to see their properties and methods. Here, we're inspecting the `req` variable.
|
|
78
93
|
|
|
79
|
-
|
|
94
|
+
<Frame>
|
|
95
|
+

|
|
96
|
+
</Frame>
|
|
80
97
|
|
|
81
98
|
In the upper left of the Sources pane, we can control the execution of the program.
|
|
82
99
|
|
|
83
|
-
|
|
100
|
+
<Frame>
|
|
101
|
+

|
|
102
|
+
</Frame>
|
|
84
103
|
|
|
85
104
|
Here's a cheat sheet explaining the functions of the control flow buttons.
|
|
86
105
|
|
|
87
|
-
- _Continue script execution_ —
|
|
88
|
-
- _Step over_ —
|
|
89
|
-
- _Step into_ —
|
|
90
|
-
- _Step out_ —
|
|
106
|
+
- _Continue script execution_ — continue running the program until the next breakpoint or exception.
|
|
107
|
+
- _Step over_ — The program will continue to the next line.
|
|
108
|
+
- _Step into_ — If the current statement contains a function call, the debugger will "step into" the called function.
|
|
109
|
+
- _Step out_ — If the current statement is a function call, the debugger will finish executing the call, then "step out" of the function to the location where it was called.
|
|
91
110
|
|
|
92
|
-
|
|
111
|
+
<Frame>
|
|
112
|
+

|
|
114
|
+
</Frame>
|
|
93
115
|
|
|
94
116
|
### Visual Studio Code Debugger
|
|
95
117
|
|
|
96
118
|
Experimental support for debugging Bun scripts is available in Visual Studio Code. To use it, you'll need to install the [Bun VSCode extension](https://bun.com/guides/runtime/vscode-debugger).
|
|
97
119
|
|
|
120
|
+
---
|
|
121
|
+
|
|
98
122
|
## Debugging Network Requests
|
|
99
123
|
|
|
100
124
|
The `BUN_CONFIG_VERBOSE_FETCH` environment variable lets you log network requests made with `fetch()` or `node:http` automatically.
|
|
@@ -107,9 +131,9 @@ The `BUN_CONFIG_VERBOSE_FETCH` environment variable lets you log network request
|
|
|
107
131
|
|
|
108
132
|
### Print fetch & node:http requests as curl commands
|
|
109
133
|
|
|
110
|
-
Bun also supports printing `fetch()` and `node:http` network requests as `curl` commands by setting the environment variable `BUN_CONFIG_VERBOSE_FETCH` to `curl`.
|
|
134
|
+
Bun also supports printing `fetch()` and `node:http` network requests as `curl` commands by setting the environment variable `BUN_CONFIG_VERBOSE_FETCH` to `curl`. This prints the `fetch` request as a single-line `curl` command to let you copy-paste into your terminal to replicate the request.
|
|
111
135
|
|
|
112
|
-
```ts
|
|
136
|
+
```ts index.ts icon="/icons/typescript.svg"
|
|
113
137
|
process.env.BUN_CONFIG_VERBOSE_FETCH = "curl";
|
|
114
138
|
|
|
115
139
|
await fetch("https://example.com", {
|
|
@@ -121,14 +145,12 @@ await fetch("https://example.com", {
|
|
|
121
145
|
});
|
|
122
146
|
```
|
|
123
147
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
```sh
|
|
127
|
-
[fetch] $ curl --http1.1 "https://example.com/" -X POST -H "content-type: application/json" -H "Connection: keep-alive" -H "User-Agent: Bun/1.3.2-canary.20251105T140650" -H "Accept: */*" -H "Host: example.com" -H "Accept-Encoding: gzip, deflate, br" --compressed -H "Content-Length: 13" --data-raw "{\"foo\":\"bar\"}"
|
|
148
|
+
```txt
|
|
149
|
+
[fetch] $ curl --http1.1 "https://example.com/" -X POST -H "content-type: application/json" -H "Connection: keep-alive" -H "User-Agent: Bun/1.3.1" -H "Accept: */*" -H "Host: example.com" -H "Accept-Encoding: gzip, deflate, br" --compressed -H "Content-Length: 13" --data-raw "{\"foo\":\"bar\"}"
|
|
128
150
|
[fetch] > HTTP/1.1 POST https://example.com/
|
|
129
151
|
[fetch] > content-type: application/json
|
|
130
152
|
[fetch] > Connection: keep-alive
|
|
131
|
-
[fetch] > User-Agent: Bun/1.3.
|
|
153
|
+
[fetch] > User-Agent: Bun/1.3.1
|
|
132
154
|
[fetch] > Accept: */*
|
|
133
155
|
[fetch] > Host: example.com
|
|
134
156
|
[fetch] > Accept-Encoding: gzip, deflate, br
|
|
@@ -152,7 +174,7 @@ The `BUN_CONFIG_VERBOSE_FETCH` environment variable is supported in both `fetch(
|
|
|
152
174
|
|
|
153
175
|
To print without the `curl` command, set `BUN_CONFIG_VERBOSE_FETCH` to `true`.
|
|
154
176
|
|
|
155
|
-
```ts
|
|
177
|
+
```ts index.ts icon="/icons/typescript.svg"
|
|
156
178
|
process.env.BUN_CONFIG_VERBOSE_FETCH = "true";
|
|
157
179
|
|
|
158
180
|
await fetch("https://example.com", {
|
|
@@ -164,13 +186,11 @@ await fetch("https://example.com", {
|
|
|
164
186
|
});
|
|
165
187
|
```
|
|
166
188
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
```sh
|
|
189
|
+
```txt
|
|
170
190
|
[fetch] > HTTP/1.1 POST https://example.com/
|
|
171
191
|
[fetch] > content-type: application/json
|
|
172
192
|
[fetch] > Connection: keep-alive
|
|
173
|
-
[fetch] > User-Agent: Bun/1.3.
|
|
193
|
+
[fetch] > User-Agent: Bun/1.3.1
|
|
174
194
|
[fetch] > Accept: */*
|
|
175
195
|
[fetch] > Host: example.com
|
|
176
196
|
[fetch] > Accept-Encoding: gzip, deflate, br
|
|
@@ -188,20 +208,12 @@ This prints the following to the console:
|
|
|
188
208
|
[fetch] < Content-Length: 1256
|
|
189
209
|
```
|
|
190
210
|
|
|
211
|
+
---
|
|
212
|
+
|
|
191
213
|
## Stacktraces & sourcemaps
|
|
192
214
|
|
|
193
215
|
Bun transpiles every file, which sounds like it would mean that the stack traces you see in the console would unhelpfully point to the transpiled output. To address this, Bun automatically generates and serves sourcemapped files for every file it transpiles. When you see a stack trace in the console, you can click on the file path and be taken to the original source code, even though it was written in TypeScript or JSX, or has some other transformation applied.
|
|
194
216
|
|
|
195
|
-
<!-- TODO: uncomment once v1.1.13 regression is fixed (cc @paperclover) -->
|
|
196
|
-
<!-- In Bun, each `Error` object gets four additional properties:
|
|
197
|
-
|
|
198
|
-
- `line` — the source-mapped line number. This number points to the input source code, not the transpiled output.
|
|
199
|
-
- `column` — the source-mapped column number. This number points to the input source code, not the transpiled output.
|
|
200
|
-
- `originalColumn` — the column number pointing to transpiled source code, without sourcemaps. This number comes from JavaScriptCore.
|
|
201
|
-
- `originalLine` — the line number pointing to transpiled source code, without sourcemaps. This number comes from JavaScriptCore.
|
|
202
|
-
|
|
203
|
-
These properties are populated lazily when `error.stack` is accessed. -->
|
|
204
|
-
|
|
205
217
|
Bun automatically loads sourcemaps both at runtime when transpiling files on-demand, and when using `bun build` to precompile files ahead of time.
|
|
206
218
|
|
|
207
219
|
### Syntax-highlighted source code preview
|
|
@@ -216,7 +228,7 @@ console.log(Bun.inspect(err, { colors: true }));
|
|
|
216
228
|
|
|
217
229
|
This prints a syntax-highlighted preview of the source code where the error occurred, along with the error message and stack trace.
|
|
218
230
|
|
|
219
|
-
```
|
|
231
|
+
```ts icon="file-code"
|
|
220
232
|
1 | // Create an error
|
|
221
233
|
2 | const err = new Error("Something went wrong");
|
|
222
234
|
^
|
|
@@ -234,7 +246,7 @@ That's why when you log `error.stack` in Bun, the formatting of `error.stack` is
|
|
|
234
246
|
|
|
235
247
|
Bun implements the [V8 Stack Trace API](https://v8.dev/docs/stack-trace-api), which is a set of functions that allow you to manipulate stack traces.
|
|
236
248
|
|
|
237
|
-
##### Error.prepareStackTrace
|
|
249
|
+
##### `Error.prepareStackTrace`
|
|
238
250
|
|
|
239
251
|
The `Error.prepareStackTrace` function is a global function that lets you customize the stack trace output. This function is called with the error object and an array of `CallSite` objects and lets you return a custom stack trace.
|
|
240
252
|
|
|
@@ -275,7 +287,7 @@ The `CallSite` object has the following methods:
|
|
|
275
287
|
|
|
276
288
|
In some cases, the `Function` object may have already been garbage collected, so some of these methods may return `undefined`.
|
|
277
289
|
|
|
278
|
-
##### Error.captureStackTrace(error, startFn)
|
|
290
|
+
##### `Error.captureStackTrace(error, startFn)`
|
|
279
291
|
|
|
280
292
|
The `Error.captureStackTrace` function lets you capture a stack trace at a specific point in your code, rather than at the point where the error was thrown.
|
|
281
293
|
|
|
@@ -283,7 +295,7 @@ This can be helpful when you have callbacks or asynchronous code that makes it d
|
|
|
283
295
|
|
|
284
296
|
For example, the below code will make `err.stack` point to the code calling `fn()`, even though the error was thrown at `myInner`.
|
|
285
297
|
|
|
286
|
-
```ts
|
|
298
|
+
```ts index.ts icon="/icons/typescript.svg"
|
|
287
299
|
const fn = () => {
|
|
288
300
|
function myInner() {
|
|
289
301
|
throw err;
|
|
@@ -304,9 +316,7 @@ const fn = () => {
|
|
|
304
316
|
fn();
|
|
305
317
|
```
|
|
306
318
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
```sh
|
|
319
|
+
```txt
|
|
310
320
|
Error: here!
|
|
311
321
|
at myInner (file.js:4:15)
|
|
312
322
|
at fn (file.js:8:5)
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Environment Variables"
|
|
3
|
+
description: "Read and configure environment variables in Bun, including automatic .env file support"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Bun reads your `.env` files automatically and provides idiomatic ways to read and write your environment variables programmatically. Plus, some aspects of Bun's runtime behavior can be configured with Bun-specific environment variables.
|
|
7
|
+
|
|
8
|
+
## Setting environment variables
|
|
9
|
+
|
|
10
|
+
Bun reads the following files automatically (listed in order of increasing precedence).
|
|
11
|
+
|
|
12
|
+
- `.env`
|
|
13
|
+
- `.env.production`, `.env.development`, `.env.test` (depending on value of `NODE_ENV`)
|
|
14
|
+
- `.env.local`
|
|
15
|
+
|
|
16
|
+
```txt .env icon="settings"
|
|
17
|
+
FOO=hello
|
|
18
|
+
BAR=world
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Variables can also be set via the command line.
|
|
22
|
+
|
|
23
|
+
<CodeGroup>
|
|
24
|
+
|
|
25
|
+
```sh Linux/macOS icon="terminal"
|
|
26
|
+
FOO=helloworld bun run dev
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```sh Windows icon="windows"
|
|
30
|
+
# Using CMD
|
|
31
|
+
set FOO=helloworld && bun run dev
|
|
32
|
+
|
|
33
|
+
# Using PowerShell
|
|
34
|
+
$env:FOO="helloworld"; bun run dev
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
</CodeGroup>
|
|
38
|
+
|
|
39
|
+
<Accordion title="Cross-platform solution with Windows">
|
|
40
|
+
|
|
41
|
+
For a cross-platform solution, you can use [bun shell](/runtime/shell). For example, the `bun exec` command.
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
bun exec 'FOO=helloworld bun run dev'
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
On Windows, `package.json` scripts called with `bun run` will automatically use the **bun shell**, making the following also cross-platform.
|
|
48
|
+
|
|
49
|
+
```json package.json
|
|
50
|
+
"scripts": {
|
|
51
|
+
"dev": "NODE_ENV=development bun --watch app.ts",
|
|
52
|
+
},
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
</Accordion>
|
|
56
|
+
|
|
57
|
+
Or programmatically by assigning a property to `process.env`.
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
process.env.FOO = "hello";
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Manually specifying `.env` files
|
|
66
|
+
|
|
67
|
+
Bun supports `--env-file` to override which specific `.env` file to load. You can use `--env-file` when running scripts in bun's runtime, or when running package.json scripts.
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
bun --env-file=.env.1 src/index.ts
|
|
71
|
+
|
|
72
|
+
bun --env-file=.env.abc --env-file=.env.def run build
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Quotation marks
|
|
78
|
+
|
|
79
|
+
Bun supports double quotes, single quotes, and template literal backticks:
|
|
80
|
+
|
|
81
|
+
```txt .env icon="settings"
|
|
82
|
+
FOO='hello'
|
|
83
|
+
FOO="hello"
|
|
84
|
+
FOO=`hello`
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Expansion
|
|
88
|
+
|
|
89
|
+
Environment variables are automatically _expanded_. This means you can reference previously-defined variables in your environment variables.
|
|
90
|
+
|
|
91
|
+
```txt .env icon="settings"
|
|
92
|
+
FOO=world
|
|
93
|
+
BAR=hello$FOO
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
process.env.BAR; // => "helloworld"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
This is useful for constructing connection strings or other compound values.
|
|
101
|
+
|
|
102
|
+
```txt .env icon="settings"
|
|
103
|
+
DB_USER=postgres
|
|
104
|
+
DB_PASSWORD=secret
|
|
105
|
+
DB_HOST=localhost
|
|
106
|
+
DB_PORT=5432
|
|
107
|
+
DB_URL=postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
This can be disabled by escaping the `$` with a backslash.
|
|
111
|
+
|
|
112
|
+
```txt .env icon="settings"
|
|
113
|
+
FOO=world
|
|
114
|
+
BAR=hello\$FOO
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
process.env.BAR; // => "hello$FOO"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### `dotenv`
|
|
122
|
+
|
|
123
|
+
Generally speaking, you won't need `dotenv` or `dotenv-expand` anymore, because Bun reads `.env` files automatically.
|
|
124
|
+
|
|
125
|
+
## Reading environment variables
|
|
126
|
+
|
|
127
|
+
The current environment variables can be accessed via `process.env`.
|
|
128
|
+
|
|
129
|
+
```ts
|
|
130
|
+
process.env.API_TOKEN; // => "secret"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Bun also exposes these variables via `Bun.env` and `import.meta.env`, which is a simple alias of `process.env`.
|
|
134
|
+
|
|
135
|
+
```ts
|
|
136
|
+
Bun.env.API_TOKEN; // => "secret"
|
|
137
|
+
import.meta.env.API_TOKEN; // => "secret"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
To print all currently-set environment variables to the command line, run `bun --print process.env`. This is useful for debugging.
|
|
141
|
+
|
|
142
|
+
```sh
|
|
143
|
+
bun --print process.env
|
|
144
|
+
BAZ=stuff
|
|
145
|
+
FOOBAR=aaaaaa
|
|
146
|
+
<lots more lines>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## TypeScript
|
|
150
|
+
|
|
151
|
+
In TypeScript, all properties of `process.env` are typed as `string | undefined`.
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
Bun.env.whatever;
|
|
155
|
+
// string | undefined
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
To get autocompletion and tell TypeScript to treat a variable as a non-optional string, we'll use [interface merging](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#merging-interfaces).
|
|
159
|
+
|
|
160
|
+
```ts
|
|
161
|
+
declare module "bun" {
|
|
162
|
+
interface Env {
|
|
163
|
+
AWESOME: string;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Add this line to any file in your project. It will globally add the `AWESOME` property to `process.env` and `Bun.env`.
|
|
169
|
+
|
|
170
|
+
```ts
|
|
171
|
+
process.env.AWESOME; // => string
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Configuring Bun
|
|
175
|
+
|
|
176
|
+
These environment variables are read by Bun and configure aspects of its behavior.
|
|
177
|
+
|
|
178
|
+
| Name | Description |
|
|
179
|
+
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
180
|
+
| `NODE_TLS_REJECT_UNAUTHORIZED` | `NODE_TLS_REJECT_UNAUTHORIZED=0` disables SSL certificate validation. This is useful for testing and debugging, but you should be very hesitant to use this in production. Note: This environment variable was originally introduced by Node.js and we kept the name for compatibility. |
|
|
181
|
+
| `BUN_CONFIG_VERBOSE_FETCH` | If `BUN_CONFIG_VERBOSE_FETCH=curl`, then fetch requests will log the url, method, request headers and response headers to the console. This is useful for debugging network requests. This also works with `node:http`. `BUN_CONFIG_VERBOSE_FETCH=1` is equivalent to `BUN_CONFIG_VERBOSE_FETCH=curl` except without the `curl` output. |
|
|
182
|
+
| `BUN_RUNTIME_TRANSPILER_CACHE_PATH` | The runtime transpiler caches the transpiled output of source files larger than 50 kb. This makes CLIs using Bun load faster. If `BUN_RUNTIME_TRANSPILER_CACHE_PATH` is set, then the runtime transpiler will cache transpiled output to the specified directory. If `BUN_RUNTIME_TRANSPILER_CACHE_PATH` is set to an empty string or the string `"0"`, then the runtime transpiler will not cache transpiled output. If `BUN_RUNTIME_TRANSPILER_CACHE_PATH` is unset, then the runtime transpiler will cache transpiled output to the platform-specific cache directory. |
|
|
183
|
+
| `TMPDIR` | Bun occasionally requires a directory to store intermediate assets during bundling or other operations. If unset, defaults to the platform-specific temporary directory: `/tmp` on Linux, `/private/tmp` on macOS. |
|
|
184
|
+
| `NO_COLOR` | If `NO_COLOR=1`, then ANSI color output is [disabled](https://no-color.org/). |
|
|
185
|
+
| `FORCE_COLOR` | If `FORCE_COLOR=1`, then ANSI color output is force enabled, even if `NO_COLOR` is set. |
|
|
186
|
+
| `BUN_CONFIG_MAX_HTTP_REQUESTS` | Control the maximum number of concurrent HTTP requests sent by fetch and `bun install`. Defaults to `256`. If you are running into rate limits or connection issues, you can reduce this number. |
|
|
187
|
+
| `BUN_CONFIG_NO_CLEAR_TERMINAL_ON_RELOAD` | If `BUN_CONFIG_NO_CLEAR_TERMINAL_ON_RELOAD=true`, then `bun --watch` will not clear the console on reload |
|
|
188
|
+
| `DO_NOT_TRACK` | Disable uploading crash reports to `bun.report` on crash. On macOS & Windows, crash report uploads are enabled by default. Otherwise, telemetry is not sent yet as of May 21st, 2024, but we are planning to add telemetry in the coming weeks. If `DO_NOT_TRACK=1`, then auto-uploading crash reports and telemetry are both [disabled](https://do-not-track.dev/). |
|
|
189
|
+
| `BUN_OPTIONS` | Prepends command-line arguments to any Bun execution. For example, `BUN_OPTIONS="--hot"` makes `bun run dev` behave like `bun --hot run dev` |
|
|
190
|
+
|
|
191
|
+
## Runtime transpiler caching
|
|
192
|
+
|
|
193
|
+
For files larger than 50 KB, Bun caches transpiled output into `$BUN_RUNTIME_TRANSPILER_CACHE_PATH` or the platform-specific cache directory. This makes CLIs using Bun load faster.
|
|
194
|
+
|
|
195
|
+
This transpiler cache is global and shared across all projects. It is safe to delete the cache at any time. It is a content-addressable cache, so it will never contain duplicate entries. It is also safe to delete the cache while a Bun process is running.
|
|
196
|
+
|
|
197
|
+
It is recommended to disable this cache when using ephemeral filesystems like Docker. Bun's Docker images automatically disable this cache.
|
|
198
|
+
|
|
199
|
+
### Disable the runtime transpiler cache
|
|
200
|
+
|
|
201
|
+
To disable the runtime transpiler cache, set `BUN_RUNTIME_TRANSPILER_CACHE_PATH` to an empty string or the string `"0"`.
|
|
202
|
+
|
|
203
|
+
```sh
|
|
204
|
+
BUN_RUNTIME_TRANSPILER_CACHE_PATH=0 bun run dev
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### What does it cache?
|
|
208
|
+
|
|
209
|
+
It caches:
|
|
210
|
+
|
|
211
|
+
- The transpiled output of source files larger than 50 KB.
|
|
212
|
+
- The sourcemap for the transpiled output of the file
|
|
213
|
+
|
|
214
|
+
The file extension `.pile` is used for these cached files.
|