bun-types 1.3.2-canary.20251105T140650 → 1.3.2
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,13 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
title: "bun publish"
|
|
3
|
+
description: Use `bun publish` to publish a package to the npm registry
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import Publish from "/snippets/cli/publish.mdx";
|
|
2
7
|
|
|
3
8
|
`bun publish` will automatically pack your package into a tarball, strip catalog and workspace protocols from the `package.json` (resolving versions if necessary), and publish to the registry specified in your configuration files. Both `bunfig.toml` and `.npmrc` files are supported.
|
|
4
9
|
|
|
5
|
-
```sh
|
|
10
|
+
```sh terminal icon="terminal"
|
|
6
11
|
## Publishing the package from the current working directory
|
|
7
|
-
|
|
12
|
+
bun publish
|
|
13
|
+
```
|
|
8
14
|
|
|
9
|
-
|
|
10
|
-
bun publish v1.3.
|
|
15
|
+
```txt
|
|
16
|
+
bun publish v1.3.1 (ca7428e9)
|
|
11
17
|
|
|
12
18
|
packed 203B package.json
|
|
13
19
|
packed 224B README.md
|
|
@@ -28,27 +34,28 @@ Registry: http://localhost:4873/
|
|
|
28
34
|
|
|
29
35
|
Alternatively, you can pack and publish your package separately by using `bun pm pack` followed by `bun publish` with the path to the output tarball.
|
|
30
36
|
|
|
31
|
-
```sh
|
|
32
|
-
|
|
37
|
+
```sh terminal icon="terminal"
|
|
38
|
+
bun pm pack
|
|
33
39
|
...
|
|
34
|
-
|
|
40
|
+
bun publish ./package.tgz
|
|
35
41
|
```
|
|
36
42
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
43
|
+
<Note>
|
|
44
|
+
`bun publish` will not run lifecycle scripts (`prepublishOnly/prepack/prepare/postpack/publish/postpublish`) if a
|
|
45
|
+
tarball path is provided. Scripts will only be run if the package is packed by `bun publish`.
|
|
46
|
+
</Note>
|
|
40
47
|
|
|
41
48
|
### `--access`
|
|
42
49
|
|
|
43
50
|
The `--access` flag can be used to set the access level of the package being published. The access level can be one of `public` or `restricted`. Unscoped packages are always public, and attempting to publish an unscoped package with `--access restricted` will result in an error.
|
|
44
51
|
|
|
45
|
-
```sh
|
|
46
|
-
|
|
52
|
+
```sh terminal icon="terminal"
|
|
53
|
+
bun publish --access public
|
|
47
54
|
```
|
|
48
55
|
|
|
49
56
|
`--access` can also be set in the `publishConfig` field of your `package.json`.
|
|
50
57
|
|
|
51
|
-
```json
|
|
58
|
+
```json package.json icon="file-json"
|
|
52
59
|
{
|
|
53
60
|
"publishConfig": {
|
|
54
61
|
"access": "restricted"
|
|
@@ -60,13 +67,13 @@ $ bun publish --access public
|
|
|
60
67
|
|
|
61
68
|
Set the tag of the package version being published. By default, the tag is `latest`. The initial version of a package is always given the `latest` tag in addition to the specified tag.
|
|
62
69
|
|
|
63
|
-
```sh
|
|
64
|
-
|
|
70
|
+
```sh terminal icon="terminal"
|
|
71
|
+
bun publish --tag alpha
|
|
65
72
|
```
|
|
66
73
|
|
|
67
74
|
`--tag` can also be set in the `publishConfig` field of your `package.json`.
|
|
68
75
|
|
|
69
|
-
```json
|
|
76
|
+
```json package.json icon="file-json"
|
|
70
77
|
{
|
|
71
78
|
"publishConfig": {
|
|
72
79
|
"tag": "next"
|
|
@@ -78,29 +85,20 @@ $ bun publish --tag alpha
|
|
|
78
85
|
|
|
79
86
|
The `--dry-run` flag can be used to simulate the publish process without actually publishing the package. This is useful for verifying the contents of the published package without actually publishing the package.
|
|
80
87
|
|
|
81
|
-
```sh
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### `--tolerate-republish`
|
|
86
|
-
|
|
87
|
-
Exit with code 0 instead of 1 if the package version already exists. Useful in CI/CD where jobs may be re-run.
|
|
88
|
-
|
|
89
|
-
```sh
|
|
90
|
-
$ bun publish --tolerate-republish
|
|
88
|
+
```sh terminal icon="terminal"
|
|
89
|
+
bun publish --dry-run
|
|
91
90
|
```
|
|
92
91
|
|
|
93
92
|
### `--gzip-level`
|
|
94
93
|
|
|
95
94
|
Specify the level of gzip compression to use when packing the package. Only applies to `bun publish` without a tarball path argument. Values range from `0` to `9` (default is `9`).
|
|
96
|
-
{% bunCLIUsage command="publish" /%}
|
|
97
95
|
|
|
98
96
|
### `--auth-type`
|
|
99
97
|
|
|
100
98
|
If you have 2FA enabled for your npm account, `bun publish` will prompt you for a one-time password. This can be done through a browser or the CLI. The `--auth-type` flag can be used to tell the npm registry which method you prefer. The possible values are `web` and `legacy`, with `web` being the default.
|
|
101
99
|
|
|
102
|
-
```sh
|
|
103
|
-
|
|
100
|
+
```sh terminal icon="terminal"
|
|
101
|
+
bun publish --auth-type legacy
|
|
104
102
|
...
|
|
105
103
|
This operation requires a one-time password.
|
|
106
104
|
Enter OTP: 123456
|
|
@@ -111,10 +109,15 @@ Enter OTP: 123456
|
|
|
111
109
|
|
|
112
110
|
Provide a one-time password directly to the CLI. If the password is valid, this will skip the extra prompt for a one-time password before publishing. Example usage:
|
|
113
111
|
|
|
114
|
-
```sh
|
|
115
|
-
|
|
112
|
+
```sh terminal icon="terminal"
|
|
113
|
+
bun publish --otp 123456
|
|
116
114
|
```
|
|
117
115
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
116
|
+
<Note>
|
|
117
|
+
`bun publish` respects the `NPM_CONFIG_TOKEN` environment variable which can be used when publishing in github actions
|
|
118
|
+
or automated workflows.
|
|
119
|
+
</Note>
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
<Publish />
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "bun remove"
|
|
3
|
+
description: "Remove dependencies from your project"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import Remove from "/snippets/cli/remove.mdx";
|
|
7
|
+
|
|
8
|
+
## Basic Usage
|
|
9
|
+
|
|
10
|
+
```bash terminal icon="terminal"
|
|
11
|
+
bun remove ts-node
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<Remove />
|
|
@@ -1,22 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "bun update"
|
|
3
|
+
description: "Update dependencies to latest versions"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import Update from "/snippets/cli/update.mdx";
|
|
7
|
+
|
|
8
|
+
<Note>To upgrade your Bun CLI version, see [`bun upgrade`](/installation#upgrading).</Note>
|
|
9
|
+
|
|
1
10
|
To update all dependencies to the latest version:
|
|
2
11
|
|
|
3
|
-
```sh
|
|
4
|
-
|
|
12
|
+
```sh terminal icon="terminal"
|
|
13
|
+
bun update
|
|
5
14
|
```
|
|
6
15
|
|
|
7
16
|
To update a specific dependency to the latest version:
|
|
8
17
|
|
|
9
|
-
```sh
|
|
10
|
-
|
|
18
|
+
```sh terminal icon="terminal"
|
|
19
|
+
bun update [package]
|
|
11
20
|
```
|
|
12
21
|
|
|
13
22
|
## `--interactive`
|
|
14
23
|
|
|
15
24
|
For a more controlled update experience, use the `--interactive` flag to select which packages to update:
|
|
16
25
|
|
|
17
|
-
```sh
|
|
18
|
-
|
|
19
|
-
|
|
26
|
+
```sh terminal icon="terminal"
|
|
27
|
+
bun update --interactive
|
|
28
|
+
bun update -i
|
|
20
29
|
```
|
|
21
30
|
|
|
22
31
|
This launches an interactive terminal interface that shows all outdated packages with their current and target versions. You can then select which packages to update.
|
|
@@ -25,7 +34,7 @@ This launches an interactive terminal interface that shows all outdated packages
|
|
|
25
34
|
|
|
26
35
|
The interface displays packages grouped by dependency type:
|
|
27
36
|
|
|
28
|
-
```
|
|
37
|
+
```txt
|
|
29
38
|
? Select packages to update - Space to toggle, Enter to confirm, a to select all, n to select none, i to invert, l to toggle latest
|
|
30
39
|
|
|
31
40
|
dependencies Current Target Latest
|
|
@@ -94,9 +103,9 @@ Within each section, individual packages may have additional suffixes (` dev`, `
|
|
|
94
103
|
|
|
95
104
|
Use the `--recursive` flag with `--interactive` to update dependencies across all workspaces in a monorepo:
|
|
96
105
|
|
|
97
|
-
```sh
|
|
98
|
-
|
|
99
|
-
|
|
106
|
+
```sh terminal icon="terminal"
|
|
107
|
+
bun update --interactive --recursive
|
|
108
|
+
bun update -i -r
|
|
100
109
|
```
|
|
101
110
|
|
|
102
111
|
This displays an additional "Workspace" column showing which workspace each dependency belongs to.
|
|
@@ -107,15 +116,15 @@ By default, `bun update` will update to the latest version of a dependency that
|
|
|
107
116
|
|
|
108
117
|
To update to the latest version, regardless of if it's compatible with the current version range, use the `--latest` flag:
|
|
109
118
|
|
|
110
|
-
```sh
|
|
111
|
-
|
|
119
|
+
```sh terminal icon="terminal"
|
|
120
|
+
bun update --latest
|
|
112
121
|
```
|
|
113
122
|
|
|
114
123
|
In interactive mode, you can toggle individual packages between their target version (respecting semver) and latest version using the **l** key.
|
|
115
124
|
|
|
116
125
|
For example, with the following `package.json`:
|
|
117
126
|
|
|
118
|
-
```json
|
|
127
|
+
```json package.json icon="file-json"
|
|
119
128
|
{
|
|
120
129
|
"dependencies": {
|
|
121
130
|
"react": "^17.0.2"
|
|
@@ -126,4 +135,6 @@ For example, with the following `package.json`:
|
|
|
126
135
|
- `bun update` would update to a version that matches `17.x`.
|
|
127
136
|
- `bun update --latest` would update to a version that matches `18.x` or later.
|
|
128
137
|
|
|
129
|
-
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
<Update />
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "bun why"
|
|
3
|
+
description: "Explain why a package is installed"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
The `bun why` command explains why a package is installed in your project by showing the dependency chain that led to its installation.
|
|
2
7
|
|
|
3
8
|
## Usage
|
|
4
9
|
|
|
5
|
-
```bash
|
|
6
|
-
|
|
10
|
+
```bash terminal icon="terminal"
|
|
11
|
+
bun why <package>
|
|
7
12
|
```
|
|
8
13
|
|
|
9
14
|
## Arguments
|
|
@@ -19,16 +24,22 @@ $ bun why <package>
|
|
|
19
24
|
|
|
20
25
|
Check why a specific package is installed:
|
|
21
26
|
|
|
22
|
-
```bash
|
|
23
|
-
|
|
27
|
+
```bash terminal icon="terminal"
|
|
28
|
+
bun why react
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```txt
|
|
24
32
|
react@18.2.0
|
|
25
33
|
└─ my-app@1.0.0 (requires ^18.0.0)
|
|
26
34
|
```
|
|
27
35
|
|
|
28
36
|
Check why all packages with a specific pattern are installed:
|
|
29
37
|
|
|
30
|
-
```bash
|
|
31
|
-
|
|
38
|
+
```bash terminal icon="terminal"
|
|
39
|
+
bun why "@types/*"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```txt
|
|
32
43
|
@types/react@18.2.15
|
|
33
44
|
└─ dev my-app@1.0.0 (requires ^18.0.0)
|
|
34
45
|
|
|
@@ -38,16 +49,22 @@ $ bun why "@types/*"
|
|
|
38
49
|
|
|
39
50
|
Show only top-level dependencies:
|
|
40
51
|
|
|
41
|
-
```bash
|
|
42
|
-
|
|
52
|
+
```bash terminal icon="terminal"
|
|
53
|
+
bun why express --top
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```txt
|
|
43
57
|
express@4.18.2
|
|
44
58
|
└─ my-app@1.0.0 (requires ^4.18.2)
|
|
45
59
|
```
|
|
46
60
|
|
|
47
61
|
Limit the dependency tree depth:
|
|
48
62
|
|
|
49
|
-
```bash
|
|
50
|
-
|
|
63
|
+
```bash terminal icon="terminal"
|
|
64
|
+
bun why express --depth 2
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```txt
|
|
51
68
|
express@4.18.2
|
|
52
69
|
└─ express-pollyfill@1.20.1 (requires ^4.18.2)
|
|
53
70
|
└─ body-parser@1.20.1 (requires ^1.20.1)
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "bun --filter"
|
|
3
|
+
description: "Select packages by pattern in a monorepo using the --filter flag"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
The `--filter` (or `-F`) flag is used for selecting packages by pattern in a monorepo. Patterns can be used to match package names or package paths, with full glob syntax support.
|
|
2
7
|
|
|
3
8
|
Currently `--filter` is supported by `bun install` and `bun outdated`, and can also be used to run scripts for multiple packages at once.
|
|
4
9
|
|
|
10
|
+
---
|
|
11
|
+
|
|
5
12
|
## Matching
|
|
6
13
|
|
|
7
14
|
### Package Name `--filter <pattern>`
|
|
@@ -12,6 +19,8 @@ Name patterns select packages based on the package name, as specified in `packag
|
|
|
12
19
|
|
|
13
20
|
Path patterns are specified by starting the pattern with `./`, and will select all packages in directories that match the pattern. For example, to match all packages in subdirectories of `packages`, you can use `--filter './packages/**'`. To match a package located in `packages/foo`, use `--filter ./packages/foo`.
|
|
14
21
|
|
|
22
|
+
---
|
|
23
|
+
|
|
15
24
|
## `bun install` and `bun outdated`
|
|
16
25
|
|
|
17
26
|
Both `bun install` and `bun outdated` support the `--filter` flag.
|
|
@@ -20,40 +29,42 @@ Both `bun install` and `bun outdated` support the `--filter` flag.
|
|
|
20
29
|
|
|
21
30
|
Given a monorepo with workspaces `pkg-a`, `pkg-b`, and `pkg-c` under `./packages`:
|
|
22
31
|
|
|
23
|
-
```bash
|
|
32
|
+
```bash terminal icon="terminal"
|
|
24
33
|
# Install dependencies for all workspaces except `pkg-c`
|
|
25
|
-
|
|
34
|
+
bun install --filter '!pkg-c'
|
|
26
35
|
|
|
27
36
|
# Install dependencies for packages in `./packages` (`pkg-a`, `pkg-b`, `pkg-c`)
|
|
28
|
-
|
|
37
|
+
bun install --filter './packages/*'
|
|
29
38
|
|
|
30
39
|
# Save as above, but exclude the root package.json
|
|
31
|
-
|
|
40
|
+
bun install --filter '!./' --filter './packages/*'
|
|
32
41
|
```
|
|
33
42
|
|
|
34
43
|
Similarly, `bun outdated` will display outdated dependencies for all packages in the monorepo, and `--filter` can be used to restrict the command to a subset of the packages:
|
|
35
44
|
|
|
36
|
-
```bash
|
|
45
|
+
```bash terminal icon="terminal"
|
|
37
46
|
# Display outdated dependencies for workspaces starting with `pkg-`
|
|
38
|
-
|
|
47
|
+
bun outdated --filter 'pkg-*'
|
|
39
48
|
|
|
40
49
|
# Display outdated dependencies for only the root package.json
|
|
41
|
-
|
|
50
|
+
bun outdated --filter './'
|
|
42
51
|
```
|
|
43
52
|
|
|
44
|
-
For more information on both these commands, see [`bun install`](
|
|
53
|
+
For more information on both these commands, see [`bun install`](/pm/cli/install) and [`bun outdated`](/pm/cli/outdated).
|
|
54
|
+
|
|
55
|
+
---
|
|
45
56
|
|
|
46
57
|
## Running scripts with `--filter`
|
|
47
58
|
|
|
48
59
|
Use the `--filter` flag to execute scripts in multiple packages at once:
|
|
49
60
|
|
|
50
|
-
```bash
|
|
61
|
+
```bash terminal icon="terminal"
|
|
51
62
|
bun --filter <pattern> <script>
|
|
52
63
|
```
|
|
53
64
|
|
|
54
65
|
Say you have a monorepo with two packages: `packages/api` and `packages/frontend`, both with a `dev` script that will start a local development server. Normally, you would have to open two separate terminal tabs, cd into each package directory, and run `bun dev`:
|
|
55
66
|
|
|
56
|
-
```bash
|
|
67
|
+
```bash terminal icon="terminal"
|
|
57
68
|
cd packages/api
|
|
58
69
|
bun dev
|
|
59
70
|
|
|
@@ -64,19 +75,20 @@ bun dev
|
|
|
64
75
|
|
|
65
76
|
Using `--filter`, you can run the `dev` script in both packages at once:
|
|
66
77
|
|
|
67
|
-
```bash
|
|
78
|
+
```bash terminal icon="terminal"
|
|
68
79
|
bun --filter '*' dev
|
|
69
80
|
```
|
|
70
81
|
|
|
71
82
|
Both commands will be run in parallel, and you will see a nice terminal UI showing their respective outputs:
|
|
72
|
-
|
|
83
|
+
|
|
84
|
+
<Frame></Frame>
|
|
73
85
|
|
|
74
86
|
### Running scripts in workspaces
|
|
75
87
|
|
|
76
|
-
Filters respect your [workspace configuration](
|
|
88
|
+
Filters respect your [workspace configuration](/pm/workspaces): If you have a `package.json` file that specifies which packages are part of the workspace,
|
|
77
89
|
`--filter` will be restricted to only these packages. Also, in a workspace you can use `--filter` to run scripts in packages that are located anywhere in the workspace:
|
|
78
90
|
|
|
79
|
-
```bash
|
|
91
|
+
```bash terminal icon="terminal"
|
|
80
92
|
# Packages
|
|
81
93
|
# src/foo
|
|
82
94
|
# src/bar
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Global cache"
|
|
3
|
+
description: "How Bun stores and manages packages in its global cache"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
All packages downloaded from the registry are stored in a global cache at `~/.bun/install/cache`, or the path defined by the environment variable `BUN_INSTALL_CACHE_DIR`. They are stored in subdirectories named like `${name}@${version}`, so multiple versions of a package can be cached.
|
|
2
7
|
|
|
3
|
-
|
|
8
|
+
<Accordion title="Configuring cache behavior">
|
|
4
9
|
|
|
5
|
-
```toml
|
|
10
|
+
```toml bunfig.toml icon="settings"
|
|
6
11
|
[install.cache]
|
|
7
12
|
# the directory to use for the cache
|
|
8
13
|
dir = "~/.bun/install/cache"
|
|
@@ -15,31 +20,38 @@ disable = false
|
|
|
15
20
|
disableManifest = false
|
|
16
21
|
```
|
|
17
22
|
|
|
18
|
-
|
|
23
|
+
</Accordion>
|
|
24
|
+
|
|
25
|
+
---
|
|
19
26
|
|
|
20
27
|
## Minimizing re-downloads
|
|
21
28
|
|
|
22
29
|
Bun strives to avoid re-downloading packages multiple times. When installing a package, if the cache already contains a version in the range specified by `package.json`, Bun will use the cached package instead of downloading it again.
|
|
23
30
|
|
|
24
|
-
|
|
31
|
+
<Accordion title="Installation details">
|
|
25
32
|
If the semver version has pre-release suffix (`1.0.0-beta.0`) or a build suffix (`1.0.0+20220101`), it is replaced with a hash of that value instead, to reduce the chances of errors associated with long file paths.
|
|
26
33
|
|
|
27
34
|
When the `node_modules` folder exists, before installing, Bun checks that `node_modules` contains all expected packages with appropriate versions. If so `bun install` completes. Bun uses a custom JSON parser which stops parsing as soon as it finds `"name"` and `"version"`.
|
|
28
35
|
|
|
29
36
|
If a package is missing or has a version incompatible with the `package.json`, Bun checks for a compatible module in the cache. If found, it is installed into `node_modules`. Otherwise, the package will be downloaded from the registry then installed.
|
|
30
|
-
|
|
37
|
+
|
|
38
|
+
</Accordion>
|
|
39
|
+
|
|
40
|
+
---
|
|
31
41
|
|
|
32
42
|
## Fast copying
|
|
33
43
|
|
|
34
44
|
Once a package is downloaded into the cache, Bun still needs to copy those files into `node_modules`. Bun uses the fastest syscalls available to perform this task. On Linux, it uses hardlinks; on macOS, it uses `clonefile`.
|
|
35
45
|
|
|
46
|
+
---
|
|
47
|
+
|
|
36
48
|
## Saving disk space
|
|
37
49
|
|
|
38
50
|
Since Bun uses hardlinks to "copy" a module into a project's `node_modules` directory on Linux and Windows, the contents of the package only exist in a single location on disk, greatly reducing the amount of disk space dedicated to `node_modules`.
|
|
39
51
|
|
|
40
52
|
This benefit also applies to macOS, but there are exceptions. It uses `clonefile` which is copy-on-write, meaning it will not occupy disk space, but it will count towards drive's limit. This behavior is useful if something attempts to patch `node_modules/*`, so it's impossible to affect other installations.
|
|
41
53
|
|
|
42
|
-
|
|
54
|
+
<Accordion title="Installation strategies">
|
|
43
55
|
This behavior is configurable with the `--backend` flag, which is respected by all of Bun's package management commands.
|
|
44
56
|
|
|
45
57
|
- **`hardlink`**: Default on Linux and Windows.
|
|
@@ -48,12 +60,13 @@ This behavior is configurable with the `--backend` flag, which is respected by a
|
|
|
48
60
|
- **`copyfile`**: The fallback used when any of the above fail. It is the slowest option. On macOS, it uses `fcopyfile()`; on Linux it uses `copy_file_range()`.
|
|
49
61
|
- **`symlink`**: Currently used only `file:` (and eventually `link:`) dependencies. To prevent infinite loops, it skips symlinking the `node_modules` folder.
|
|
50
62
|
|
|
51
|
-
If you install with `--backend=symlink`, Node.js won't resolve node_modules of dependencies unless each dependency has its own `node_modules` folder or you pass `--preserve-symlinks` to `node
|
|
63
|
+
If you install with `--backend=symlink`, Node.js won't resolve node_modules of dependencies unless each dependency has its own `node_modules` folder or you pass `--preserve-symlinks` to `node`. See [Node.js documentation on `--preserve-symlinks`](https://nodejs.org/api/cli.html#--preserve-symlinks).
|
|
52
64
|
|
|
53
|
-
```bash
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
$ bun --preserve-symlinks ./foo.js
|
|
65
|
+
```bash terminal icon="terminal"
|
|
66
|
+
bun install --backend symlink
|
|
67
|
+
node --preserve-symlinks ./foo.js
|
|
57
68
|
```
|
|
58
69
|
|
|
59
|
-
|
|
70
|
+
Bun's runtime does not currently expose an equivalent of `--preserve-symlinks`.
|
|
71
|
+
|
|
72
|
+
</Accordion>
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Isolated installs"
|
|
3
|
+
description: "Strict dependency isolation similar to pnpm's approach"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
Bun provides an alternative package installation strategy called **isolated installs** that creates strict dependency isolation similar to pnpm's approach. This mode prevents phantom dependencies and ensures reproducible, deterministic builds.
|
|
2
7
|
|
|
8
|
+
This is the default installation strategy for monorepo projects.
|
|
9
|
+
|
|
3
10
|
## What are isolated installs?
|
|
4
11
|
|
|
5
12
|
Isolated installs create a non-hoisted dependency structure where packages can only access their explicitly declared dependencies. This differs from the traditional "hoisted" installation strategy used by npm and Yarn, where dependencies are flattened into a shared `node_modules` directory.
|
|
@@ -17,29 +24,29 @@ Isolated installs create a non-hoisted dependency structure where packages can o
|
|
|
17
24
|
|
|
18
25
|
Use the `--linker` flag to specify the installation strategy:
|
|
19
26
|
|
|
20
|
-
```bash
|
|
27
|
+
```bash terminal icon="terminal"
|
|
21
28
|
# Use isolated installs
|
|
22
|
-
|
|
29
|
+
bun install --linker isolated
|
|
23
30
|
|
|
24
31
|
# Use traditional hoisted installs
|
|
25
|
-
|
|
32
|
+
bun install --linker hoisted
|
|
26
33
|
```
|
|
27
34
|
|
|
28
35
|
### Configuration file
|
|
29
36
|
|
|
30
|
-
Set the default linker strategy in your `bunfig.toml`:
|
|
37
|
+
Set the default linker strategy in your `bunfig.toml` or globally in `$HOME/.bunfig.toml`:
|
|
31
38
|
|
|
32
|
-
```toml
|
|
39
|
+
```toml bunfig.toml icon="settings"
|
|
33
40
|
[install]
|
|
34
41
|
linker = "isolated"
|
|
35
42
|
```
|
|
36
43
|
|
|
37
44
|
### Default behavior
|
|
38
45
|
|
|
39
|
-
-
|
|
40
|
-
-
|
|
46
|
+
- For monorepo projects, Bun uses the **isolated** installation strategy by default.
|
|
47
|
+
- For single-project projects, Bun uses the **hoisted** installation strategy by default.
|
|
41
48
|
|
|
42
|
-
|
|
49
|
+
You can override the default behavior by explicitly specifying the `--linker` flag or setting it in your configuration file.
|
|
43
50
|
|
|
44
51
|
## How isolated installs work
|
|
45
52
|
|
|
@@ -47,7 +54,7 @@ To override the default, use `--linker hoisted` or `--linker isolated`, or set i
|
|
|
47
54
|
|
|
48
55
|
Instead of hoisting dependencies, isolated installs create a two-tier structure:
|
|
49
56
|
|
|
50
|
-
```
|
|
57
|
+
```bash tree layout of node_modules icon="list-tree"
|
|
51
58
|
node_modules/
|
|
52
59
|
├── .bun/ # Central package store
|
|
53
60
|
│ ├── package@1.0.0/ # Versioned package installations
|
|
@@ -93,7 +100,7 @@ In monorepos, workspace dependencies are handled specially:
|
|
|
93
100
|
|
|
94
101
|
Isolated installs handle peer dependencies through sophisticated resolution:
|
|
95
102
|
|
|
96
|
-
```bash
|
|
103
|
+
```bash tree layout of node_modules icon="list-tree"
|
|
97
104
|
# Package with peer dependencies creates specialized paths
|
|
98
105
|
node_modules/.bun/package@1.0.0_react@18.2.0/
|
|
99
106
|
```
|
|
@@ -112,8 +119,8 @@ Bun uses different file operation strategies for performance:
|
|
|
112
119
|
|
|
113
120
|
Enable verbose logging to understand the installation process:
|
|
114
121
|
|
|
115
|
-
```bash
|
|
116
|
-
|
|
122
|
+
```bash terminal icon="terminal"
|
|
123
|
+
bun install --linker isolated --verbose
|
|
117
124
|
```
|
|
118
125
|
|
|
119
126
|
This shows:
|
|
@@ -137,8 +144,8 @@ If you encounter issues, you can:
|
|
|
137
144
|
|
|
138
145
|
1. **Switch to hoisted mode** for specific projects:
|
|
139
146
|
|
|
140
|
-
```bash
|
|
141
|
-
|
|
147
|
+
```bash terminal icon="terminal"
|
|
148
|
+
bun install --linker hoisted
|
|
142
149
|
```
|
|
143
150
|
|
|
144
151
|
2. **Report compatibility issues** to help improve isolated install support
|
|
@@ -153,37 +160,38 @@ If you encounter issues, you can:
|
|
|
153
160
|
|
|
154
161
|
### From npm/Yarn
|
|
155
162
|
|
|
156
|
-
```bash
|
|
163
|
+
```bash terminal icon="terminal"
|
|
157
164
|
# Remove existing node_modules and lockfiles
|
|
158
|
-
|
|
165
|
+
rm -rf node_modules package-lock.json yarn.lock
|
|
159
166
|
|
|
160
167
|
# Install with isolated linker
|
|
161
|
-
|
|
168
|
+
bun install --linker isolated
|
|
162
169
|
```
|
|
163
170
|
|
|
164
171
|
### From pnpm
|
|
165
172
|
|
|
166
173
|
Isolated installs are conceptually similar to pnpm, so migration should be straightforward:
|
|
167
174
|
|
|
168
|
-
```bash
|
|
175
|
+
```bash terminal icon="terminal"
|
|
169
176
|
# Remove pnpm files
|
|
170
177
|
$ rm -rf node_modules pnpm-lock.yaml
|
|
171
178
|
|
|
172
179
|
# Install with Bun's isolated linker
|
|
173
|
-
|
|
180
|
+
bun install --linker isolated
|
|
174
181
|
```
|
|
175
182
|
|
|
176
183
|
The main difference is that Bun uses symlinks in `node_modules` while pnpm uses a global store with symlinks.
|
|
177
184
|
|
|
178
185
|
## When to use isolated installs
|
|
179
186
|
|
|
180
|
-
**
|
|
187
|
+
**Use isolated installs when:**
|
|
181
188
|
|
|
189
|
+
- Working in monorepos with multiple packages
|
|
182
190
|
- Strict dependency management is required
|
|
183
191
|
- Preventing phantom dependencies is important
|
|
184
192
|
- Building libraries that need deterministic dependencies
|
|
185
193
|
|
|
186
|
-
**
|
|
194
|
+
**Use hoisted installs when:**
|
|
187
195
|
|
|
188
196
|
- Working with legacy code that assumes flat `node_modules`
|
|
189
197
|
- Compatibility with existing build tools is required
|
|
@@ -192,6 +200,6 @@ The main difference is that Bun uses symlinks in `node_modules` while pnpm uses
|
|
|
192
200
|
|
|
193
201
|
## Related documentation
|
|
194
202
|
|
|
195
|
-
- [Package manager > Workspaces](
|
|
196
|
-
- [Package manager > Lockfile](
|
|
197
|
-
- [CLI > install](
|
|
203
|
+
- [Package manager > Workspaces](/pm/workspaces) — Monorepo workspace management
|
|
204
|
+
- [Package manager > Lockfile](/pm/lockfile) — Understanding Bun's lockfile format
|
|
205
|
+
- [CLI > install](/pm/cli/install) — Complete `bun install` command reference
|