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,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Migrate from npm install to bun install
|
|
3
|
+
sidebarTitle: Migrate from npm to bun
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
`bun install` is a Node.js compatible npm client designed to be an incredibly fast successor to npm.
|
|
@@ -11,18 +13,18 @@ We've put a lot of work into making sure that the migration path from `npm insta
|
|
|
11
13
|
- **`.npmrc` compatible**: bun install reads npm registry configuration from npm's `.npmrc`, so you can use the same configuration for both npm and Bun.
|
|
12
14
|
- **Hardlinks**: On Windows and Linux, `bun install` uses hardlinks to conserve disk space and install times.
|
|
13
15
|
|
|
14
|
-
```bash
|
|
16
|
+
```bash terminal icon="terminal"
|
|
15
17
|
# It only takes one command to migrate
|
|
16
|
-
|
|
18
|
+
bun i
|
|
17
19
|
|
|
18
20
|
# To add dependencies:
|
|
19
|
-
|
|
21
|
+
bun i @types/bun
|
|
20
22
|
|
|
21
23
|
# To add devDependencies:
|
|
22
|
-
|
|
24
|
+
bun i -d @types/bun
|
|
23
25
|
|
|
24
26
|
# To remove a dependency:
|
|
25
|
-
|
|
27
|
+
bun rm @types/bun
|
|
26
28
|
```
|
|
27
29
|
|
|
28
30
|
---
|
|
@@ -40,17 +42,17 @@ Run scripts from package.json, executables from `node_modules/.bin` (sort of lik
|
|
|
40
42
|
|
|
41
43
|
When you use `bun run <executable>`, it will choose the locally-installed executable
|
|
42
44
|
|
|
43
|
-
```sh
|
|
45
|
+
```sh terminal icon="terminal"
|
|
44
46
|
# Run a package.json script:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
bun my-script
|
|
48
|
+
bun run my-script
|
|
47
49
|
|
|
48
50
|
# Run an executable in node_modules/.bin:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
bun my-executable # such as tsc, esbuild, etc.
|
|
52
|
+
bun run my-executable
|
|
51
53
|
|
|
52
54
|
# Run a JavaScript/TypeScript file:
|
|
53
|
-
|
|
55
|
+
bun ./index.ts
|
|
54
56
|
```
|
|
55
57
|
|
|
56
58
|
---
|
|
@@ -61,7 +63,7 @@ $ bun ./index.ts
|
|
|
61
63
|
|
|
62
64
|
In package.json, you can set `"workspaces"` to an array of relative paths.
|
|
63
65
|
|
|
64
|
-
```json
|
|
66
|
+
```json package.json icon="file-json"
|
|
65
67
|
{
|
|
66
68
|
"name": "my-app",
|
|
67
69
|
"workspaces": ["packages/*", "apps/*"]
|
|
@@ -74,8 +76,8 @@ In package.json, you can set `"workspaces"` to an array of relative paths.
|
|
|
74
76
|
|
|
75
77
|
In Bun, the `--filter` flag accepts a glob pattern, and will run the command concurrently for all workspace packages with a `name` that matches the pattern, respecting dependency order.
|
|
76
78
|
|
|
77
|
-
```sh
|
|
78
|
-
|
|
79
|
+
```sh terminal icon="terminal"
|
|
80
|
+
bun --filter 'lib-*' my-script
|
|
79
81
|
# instead of:
|
|
80
82
|
# npm run --workspace lib-foo --workspace lib-bar my-script
|
|
81
83
|
```
|
|
@@ -86,21 +88,21 @@ $ bun --filter 'lib-*' my-script
|
|
|
86
88
|
|
|
87
89
|
To update a dependency, you can use `bun update <package>`. This will update the dependency to the latest version that satisfies the semver range specified in package.json.
|
|
88
90
|
|
|
89
|
-
```sh
|
|
91
|
+
```sh terminal icon="terminal"
|
|
90
92
|
# Update a single dependency
|
|
91
|
-
|
|
93
|
+
bun update @types/bun
|
|
92
94
|
|
|
93
95
|
# Update all dependencies
|
|
94
|
-
|
|
96
|
+
bun update
|
|
95
97
|
|
|
96
98
|
# Ignore semver, update to the latest version
|
|
97
|
-
|
|
99
|
+
bun update @types/bun --latest
|
|
98
100
|
|
|
99
101
|
# Update a dependency to a specific version
|
|
100
|
-
|
|
102
|
+
bun update @types/bun@1.3.1
|
|
101
103
|
|
|
102
104
|
# Update all dependencies to the latest versions
|
|
103
|
-
|
|
105
|
+
bun update --latest
|
|
104
106
|
```
|
|
105
107
|
|
|
106
108
|
---
|
|
@@ -109,8 +111,11 @@ $ bun update --latest
|
|
|
109
111
|
|
|
110
112
|
To view outdated dependencies, run `bun outdated`. This is like `npm outdated` but with more compact output.
|
|
111
113
|
|
|
112
|
-
```sh
|
|
113
|
-
|
|
114
|
+
```sh terminal icon="terminal"
|
|
115
|
+
bun outdated
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
```txt
|
|
114
119
|
┌────────────────────────────────────────┬─────────┬────────┬────────┐
|
|
115
120
|
│ Package │ Current │ Update │ Latest │
|
|
116
121
|
├────────────────────────────────────────┼─────────┼────────┼────────┤
|
|
@@ -144,18 +149,27 @@ $ bun outdated
|
|
|
144
149
|
|
|
145
150
|
To list installed packages, you can use `bun pm ls`. This will list all the packages that are installed in the `node_modules` folder using Bun's lockfile as the source of truth. You can pass the `-a` flag to list all installed packages, including transitive dependencies.
|
|
146
151
|
|
|
147
|
-
```sh
|
|
152
|
+
```sh terminal icon="terminal"
|
|
148
153
|
# List top-level installed packages:
|
|
149
|
-
|
|
154
|
+
bun pm ls
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
```txt
|
|
150
158
|
my-pkg node_modules (781)
|
|
151
159
|
├── @types/node@20.16.5
|
|
152
160
|
├── @types/react@18.3.8
|
|
153
161
|
├── @types/react-dom@18.3.0
|
|
154
162
|
├── eslint@8.57.1
|
|
155
163
|
├── eslint-config-next@14.2.8
|
|
164
|
+
...
|
|
165
|
+
```
|
|
156
166
|
|
|
167
|
+
```sh terminal icon="terminal"
|
|
157
168
|
# List all installed packages:
|
|
158
|
-
|
|
169
|
+
bun pm ls -a
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
```txt
|
|
159
173
|
my-pkg node_modules
|
|
160
174
|
├── @alloc/quick-lru@5.2.0
|
|
161
175
|
├── @isaacs/cliui@8.0.2
|
|
@@ -172,10 +186,12 @@ my-pkg node_modules
|
|
|
172
186
|
|
|
173
187
|
To create a package tarball, you can use `bun pm pack`. This will create a tarball of the package in the current directory.
|
|
174
188
|
|
|
175
|
-
```sh
|
|
189
|
+
```sh terminal icon="terminal"
|
|
176
190
|
# Create a tarball
|
|
177
|
-
|
|
191
|
+
bun pm pack
|
|
192
|
+
```
|
|
178
193
|
|
|
194
|
+
```txt
|
|
179
195
|
Total files: 46
|
|
180
196
|
Shasum: 2ee19b6f0c6b001358449ca0eadead703f326216
|
|
181
197
|
Integrity: sha512-ZV0lzWTEkGAMz[...]Gl4f8lA9sl97g==
|
|
@@ -191,12 +207,12 @@ If the package references `node` in the `#!/usr/bin/env node` shebang, `bun run`
|
|
|
191
207
|
|
|
192
208
|
When you pass `--bun` to `bun run`, we create a symlink to the locally-installed Bun executable named `"node"` in a temporary directory and add that to your `PATH` for the duration of the script's execution.
|
|
193
209
|
|
|
194
|
-
```sh
|
|
210
|
+
```sh terminal icon="terminal"
|
|
195
211
|
# Force using Bun's runtime instead of node
|
|
196
|
-
|
|
212
|
+
bun --bun my-script
|
|
197
213
|
|
|
198
214
|
# This also works:
|
|
199
|
-
|
|
215
|
+
bun run --bun my-script
|
|
200
216
|
```
|
|
201
217
|
|
|
202
218
|
---
|
|
@@ -205,10 +221,10 @@ $ bun run --bun my-script
|
|
|
205
221
|
|
|
206
222
|
You can install packages globally using `bun i -g <package>`. This will install into a `.bun/install/global/node_modules` folder inside your home directory by default.
|
|
207
223
|
|
|
208
|
-
```sh
|
|
224
|
+
```sh terminal icon="terminal"
|
|
209
225
|
# Install a package globally
|
|
210
|
-
|
|
226
|
+
bun i -g eslint
|
|
211
227
|
|
|
212
228
|
# Run a globally-installed package without the `bun run` prefix
|
|
213
|
-
|
|
229
|
+
eslint --init
|
|
214
230
|
```
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Configure git to diff Bun's lockb lockfile
|
|
3
|
+
sidebarTitle: Configure git to diff Bun's lockfile
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
Bun v1.1.39 introduced `bun.lock`, a JSONC formatted lockfile. `bun.lock` is human-readable and git-diffable without
|
|
7
|
-
|
|
7
|
+
<Note>
|
|
8
|
+
Bun v1.1.39 introduced `bun.lock`, a JSONC formatted lockfile. `bun.lock` is human-readable and git-diffable without
|
|
9
|
+
configuration, at no cost to performance. [**Learn more.**](https://bun.com/docs/install/lockfile#text-based-lockfile)
|
|
10
|
+
</Note>
|
|
8
11
|
|
|
9
12
|
---
|
|
10
13
|
|
|
11
14
|
To teach `git` how to generate a human-readable diff of Bun's binary lockfile format (`.lockb`), add the following to your local or global `.gitattributes` file:
|
|
12
15
|
|
|
13
|
-
```js
|
|
16
|
+
```js gitattributes icon="file-code"
|
|
14
17
|
*.lockb binary diff=lockb
|
|
15
18
|
```
|
|
16
19
|
|
|
@@ -18,18 +21,18 @@ To teach `git` how to generate a human-readable diff of Bun's binary lockfile fo
|
|
|
18
21
|
|
|
19
22
|
Then add the following to you local git config with:
|
|
20
23
|
|
|
21
|
-
```sh
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
```sh terminal icon="terminal"
|
|
25
|
+
git config diff.lockb.textconv bun
|
|
26
|
+
git config diff.lockb.binary true
|
|
24
27
|
```
|
|
25
28
|
|
|
26
29
|
---
|
|
27
30
|
|
|
28
31
|
To globally configure git to diff Bun's lockfile, add the following to your global git config with:
|
|
29
32
|
|
|
30
|
-
```sh
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
```sh terminal icon="terminal"
|
|
34
|
+
git config --global diff.lockb.textconv bun
|
|
35
|
+
git config --global diff.lockb.binary true
|
|
33
36
|
```
|
|
34
37
|
|
|
35
38
|
---
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Using bun install with Artifactory
|
|
3
|
+
sidebarTitle: JFrog Artifactory with Bun
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
[JFrog Artifactory](https://jfrog.com/artifactory/) is a package management system for npm, Docker, Maven, NuGet, Ruby, Helm, and more. It allows you to host your own private npm registry, npm packages, and other types of packages as well.
|
|
@@ -12,7 +14,7 @@ To use it with `bun install`, add a `bunfig.toml` file to your project with the
|
|
|
12
14
|
|
|
13
15
|
Make sure to replace `MY_SUBDOMAIN` with your JFrog Artifactory subdomain, such as `jarred1234` and MY_TOKEN with your JFrog Artifactory token.
|
|
14
16
|
|
|
15
|
-
```toml
|
|
17
|
+
```toml bunfig.toml icon="settings"
|
|
16
18
|
[install.registry]
|
|
17
19
|
url = "https://MY_SUBDOMAIN.jfrog.io/artifactory/api/npm/npm/_auth=MY_TOKEN"
|
|
18
20
|
# Bun v1.0.3+ supports using an environment variable here
|
|
@@ -24,5 +26,3 @@ url = "https://MY_SUBDOMAIN.jfrog.io/artifactory/api/npm/npm/_auth=MY_TOKEN"
|
|
|
24
26
|
### Configure with `$NPM_CONFIG_REGISTRY`
|
|
25
27
|
|
|
26
28
|
Like with npm, you can use the `NPM_CONFIG_REGISTRY` environment variable to configure JFrog Artifactory with bun install.
|
|
27
|
-
|
|
28
|
-
---
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Install a package under a different name
|
|
3
|
+
sidebarTitle: Install with alias
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
To install an npm package under an alias:
|
|
6
8
|
|
|
7
|
-
```sh
|
|
8
|
-
|
|
9
|
+
```sh terminal icon="terminal"
|
|
10
|
+
bun add my-custom-name@npm:zod
|
|
9
11
|
```
|
|
10
12
|
|
|
11
13
|
---
|
|
12
14
|
|
|
13
15
|
The `zod` package can now be imported as `my-custom-name`.
|
|
14
16
|
|
|
15
|
-
```ts
|
|
17
|
+
```ts index.ts icon="/icons/typescript.svg"
|
|
16
18
|
import { z } from "my-custom-name";
|
|
17
19
|
|
|
18
20
|
z.string();
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Configure a private registry for an organization scope with bun install
|
|
3
|
+
sidebarTitle: Configure a scoped registry
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Private registries can be configured using either [`.npmrc`](https://bun.com/docs/install/npmrc) or [`bunfig.toml`](https://bun.com/docs/runtime/bunfig#install-registry). While both are supported, we recommend using **bunfig.toml** for enhanced flexibility and Bun-specific options.
|
|
6
8
|
|
|
7
9
|
To configure a registry for a particular npm scope:
|
|
8
10
|
|
|
9
|
-
```toml
|
|
11
|
+
```toml bunfig.toml icon="settings"
|
|
10
12
|
[install.scopes]
|
|
11
13
|
# as a string
|
|
12
|
-
"@myorg1" = "https://
|
|
14
|
+
"@myorg1" = "https://usertitle:password@registry.myorg.com/"
|
|
13
15
|
|
|
14
16
|
# as an object with username/password
|
|
15
17
|
# you can reference environment variables
|
|
@@ -28,7 +30,7 @@ To configure a registry for a particular npm scope:
|
|
|
28
30
|
|
|
29
31
|
Your `bunfig.toml` can reference environment variables. Bun automatically loads environment variables from `.env.local`, `.env.[NODE_ENV]`, and `.env`. See [Docs > Environment variables](https://bun.com/docs/runtime/env) for more information.
|
|
30
32
|
|
|
31
|
-
```toml
|
|
33
|
+
```toml bunfig.toml icon="settings"
|
|
32
34
|
[install.scopes]
|
|
33
35
|
"@myorg3" = { token = "$npm_token", url = "https://registry.myorg.com/" }
|
|
34
36
|
```
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Add a trusted dependency
|
|
3
|
+
sidebarTitle: Add a trusted dependency
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Unlike other npm clients, Bun does not execute arbitrary lifecycle scripts for installed dependencies, such as `postinstall` and `node-gyp` builds. These scripts represent a potential security risk, as they can execute arbitrary code on your machine.
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
Bun includes a default allowlist of popular packages containing `postinstall` scripts that are known to be safe. You
|
|
9
|
-
|
|
9
|
+
<Note>
|
|
10
|
+
Bun includes a default allowlist of popular packages containing `postinstall` scripts that are known to be safe. You
|
|
11
|
+
can see this list [here](https://github.com/oven-sh/bun/blob/main/src/install/default-trusted-dependencies.txt).
|
|
12
|
+
</Note>
|
|
10
13
|
|
|
11
14
|
---
|
|
12
15
|
|
|
@@ -19,26 +22,27 @@ If you are seeing one of the following errors, you are probably trying to use a
|
|
|
19
22
|
|
|
20
23
|
To allow Bun to execute lifecycle scripts for a specific package, add the package to `trustedDependencies` in your package.json file. You can do this automatically by running the command `bun pm trust <pkg>`.
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
Note that this only allows lifecycle scripts for the specific package listed in `trustedDependencies`, _not_ the
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
<Note>
|
|
26
|
+
Note that this only allows lifecycle scripts for the specific package listed in `trustedDependencies`, _not_ the
|
|
27
|
+
dependencies of that dependency!
|
|
28
|
+
</Note>
|
|
29
|
+
|
|
30
|
+
```json package.json icon="file-json"
|
|
31
|
+
{
|
|
32
|
+
"name": "my-app",
|
|
33
|
+
"version": "1.0.0",
|
|
34
|
+
"trustedDependencies": ["my-trusted-package"] // [!code ++]
|
|
35
|
+
}
|
|
32
36
|
```
|
|
33
37
|
|
|
34
38
|
---
|
|
35
39
|
|
|
36
40
|
Once this is added, run a fresh install. Bun will re-install your dependencies and properly install
|
|
37
41
|
|
|
38
|
-
```sh
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
```sh terminal icon="terminal"
|
|
43
|
+
rm -rf node_modules
|
|
44
|
+
rm bun.lock
|
|
45
|
+
bun install
|
|
42
46
|
```
|
|
43
47
|
|
|
44
48
|
---
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Configuring a monorepo using workspaces
|
|
3
|
+
sidebarTitle: Workspaces with Bun
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Bun's package manager supports npm `"workspaces"`. This allows you to split a codebase into multiple distinct "packages" that live in the same repository, can depend on each other, and (when possible) share a `node_modules` directory.
|
|
@@ -10,13 +12,11 @@ Clone [this sample project](https://github.com/colinhacks/bun-workspaces) to exp
|
|
|
10
12
|
|
|
11
13
|
The root `package.json` should not contain any `"dependencies"`, `"devDependencies"`, etc. Each individual package should be self-contained and declare its own dependencies. Similarly, it's conventional to declare `"private": true` to avoid accidentally publishing the root package to `npm`.
|
|
12
14
|
|
|
13
|
-
```json
|
|
15
|
+
```json package.json icon="file-json"
|
|
14
16
|
{
|
|
15
17
|
"name": "my-monorepo",
|
|
16
18
|
"private": true,
|
|
17
|
-
"workspaces": [
|
|
18
|
-
"packages/*"
|
|
19
|
-
]
|
|
19
|
+
"workspaces": ["packages/*"]
|
|
20
20
|
}
|
|
21
21
|
```
|
|
22
22
|
|
|
@@ -24,7 +24,7 @@ The root `package.json` should not contain any `"dependencies"`, `"devDependenci
|
|
|
24
24
|
|
|
25
25
|
It's common to place all packages in a `packages` directory. The `"workspaces"` field in package.json supports glob patterns, so you can use `packages/*` to indicate that each subdirectory of `packages` should be considered separate _package_ (also known as a workspace).
|
|
26
26
|
|
|
27
|
-
```txt
|
|
27
|
+
```txt File Tree icon="folder-tree"
|
|
28
28
|
.
|
|
29
29
|
├── package.json
|
|
30
30
|
├── node_modules
|
|
@@ -39,11 +39,11 @@ It's common to place all packages in a `packages` directory. The `"workspaces"`
|
|
|
39
39
|
|
|
40
40
|
To add dependencies between workspaces, use the `"workspace:*"` syntax. Here we're adding `stuff-a` as a dependency of `stuff-b`.
|
|
41
41
|
|
|
42
|
-
```json
|
|
42
|
+
```json packages/stuff-b/package.json icon="file-json"
|
|
43
43
|
{
|
|
44
44
|
"name": "stuff-b",
|
|
45
45
|
"dependencies": {
|
|
46
|
-
|
|
46
|
+
"stuff-a": "workspace:*" // [!code ++]
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
```
|
|
@@ -52,17 +52,17 @@ To add dependencies between workspaces, use the `"workspace:*"` syntax. Here we'
|
|
|
52
52
|
|
|
53
53
|
Once added, run `bun install` from the project root to install dependencies for all workspaces.
|
|
54
54
|
|
|
55
|
-
```sh
|
|
56
|
-
|
|
55
|
+
```sh terminal icon="terminal"
|
|
56
|
+
bun install
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
61
61
|
To add npm dependencies to a particular workspace, just `cd` to the appropriate directory and run `bun add` commands as you would normally. Bun will detect that you are in a workspace and hoist the dependency as needed.
|
|
62
62
|
|
|
63
|
-
```sh
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
```sh terminal icon="terminal"
|
|
64
|
+
cd packages/stuff-a
|
|
65
|
+
bun add zod
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
---
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Generate a yarn-compatible lockfile
|
|
3
|
+
sidebarTitle: Generate a yarn-compatible lockfile
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
Bun v1.1.39 introduced `bun.lock`, a JSONC formatted lockfile. `bun.lock` is human-readable and git-diffable without
|
|
7
|
-
|
|
7
|
+
<Note>
|
|
8
|
+
Bun v1.1.39 introduced `bun.lock`, a JSONC formatted lockfile. `bun.lock` is human-readable and git-diffable without
|
|
9
|
+
configuration, at no cost to performance. [**Learn more.**](https://bun.com/docs/install/lockfile#text-based-lockfile)
|
|
10
|
+
</Note>
|
|
8
11
|
|
|
9
12
|
---
|
|
10
13
|
|
|
11
14
|
Use the `--yarn` flag to generate a Yarn-compatible `yarn.lock` file (in addition to `bun.lock`).
|
|
12
15
|
|
|
13
|
-
```sh
|
|
14
|
-
|
|
16
|
+
```sh terminal icon="terminal"
|
|
17
|
+
bun install --yarn
|
|
15
18
|
```
|
|
16
19
|
|
|
17
20
|
---
|
|
18
21
|
|
|
19
22
|
To set this as the default behavior, add the following to your `bunfig.toml` file.
|
|
20
23
|
|
|
21
|
-
```toml
|
|
24
|
+
```toml bunfig.toml icon="settings"
|
|
22
25
|
[install.lockfile]
|
|
23
26
|
print = "yarn"
|
|
24
27
|
```
|
|
@@ -27,8 +30,11 @@ print = "yarn"
|
|
|
27
30
|
|
|
28
31
|
To print a Yarn lockfile to your console without writing it to disk, "run" your `bun.lockb` with `bun`.
|
|
29
32
|
|
|
30
|
-
```sh
|
|
31
|
-
|
|
33
|
+
```sh terminal icon="terminal"
|
|
34
|
+
bun bun.lockb
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
```txt
|
|
32
38
|
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
33
39
|
# yarn lockfile v1
|
|
34
40
|
# bun ./bun.lockb --hash: 9BFBF11D86084AAB-9418b03ff880c569-390CE6459EACEC9A...
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Parse command-line arguments
|
|
3
|
+
sidebarTitle: Parse command-line arguments
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
The _argument vector_ is the list of arguments passed to the program when it is run. It is available as `Bun.argv`.
|
|
6
8
|
|
|
7
|
-
```ts
|
|
9
|
+
```ts cli.ts icon="/icons/typescript.svg"
|
|
8
10
|
console.log(Bun.argv);
|
|
9
11
|
```
|
|
10
12
|
|
|
@@ -12,8 +14,11 @@ console.log(Bun.argv);
|
|
|
12
14
|
|
|
13
15
|
Running this file with arguments results in the following:
|
|
14
16
|
|
|
15
|
-
```sh
|
|
16
|
-
|
|
17
|
+
```sh terminal icon="terminal"
|
|
18
|
+
bun run cli.ts --flag1 --flag2 value
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```txt
|
|
17
22
|
[ '/path/to/bun', '/path/to/cli.ts', '--flag1', '--flag2', 'value' ]
|
|
18
23
|
```
|
|
19
24
|
|
|
@@ -23,17 +28,17 @@ To parse `argv` into a more useful format, `util.parseArgs` would be helpful.
|
|
|
23
28
|
|
|
24
29
|
Example:
|
|
25
30
|
|
|
26
|
-
```ts
|
|
31
|
+
```ts cli.ts icon="/icons/typescript.svg"
|
|
27
32
|
import { parseArgs } from "util";
|
|
28
33
|
|
|
29
34
|
const { values, positionals } = parseArgs({
|
|
30
35
|
args: Bun.argv,
|
|
31
36
|
options: {
|
|
32
37
|
flag1: {
|
|
33
|
-
type:
|
|
38
|
+
type: "boolean",
|
|
34
39
|
},
|
|
35
40
|
flag2: {
|
|
36
|
-
type:
|
|
41
|
+
type: "string",
|
|
37
42
|
},
|
|
38
43
|
},
|
|
39
44
|
strict: true,
|
|
@@ -48,8 +53,11 @@ console.log(positionals);
|
|
|
48
53
|
|
|
49
54
|
then it outputs
|
|
50
55
|
|
|
51
|
-
```sh
|
|
52
|
-
|
|
56
|
+
```sh terminal icon="terminal"
|
|
57
|
+
bun run cli.ts --flag1 --flag2 value
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```txt
|
|
53
61
|
{
|
|
54
62
|
flag1: true,
|
|
55
63
|
flag2: "value",
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Listen for CTRL+C
|
|
3
|
+
sidebarTitle: Listen for CTRL+C
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
The `ctrl+c` shortcut sends an _interrupt signal_ to the running process. This signal can be intercepted by listening for the `SIGINT` event. If you want to close the process, you must explicitly call `process.exit()`.
|
|
6
8
|
|
|
7
|
-
```ts
|
|
9
|
+
```ts process.ts icon="/icons/typescript.svg"
|
|
8
10
|
process.on("SIGINT", () => {
|
|
9
11
|
console.log("Ctrl-C was pressed");
|
|
10
12
|
process.exit();
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Spawn a child process and communicate using IPC
|
|
3
|
+
sidebarTitle: Spawn a child process and communicate using IPC
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Use [`Bun.spawn()`](https://bun.com/docs/api/spawn) to spawn a child process. When spawning a second `bun` process, you can open a direct inter-process communication (IPC) channel between the two processes.
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
<Note>
|
|
10
|
+
This API is only compatible with other `bun` processes. Use `process.execPath` to get a path to the currently running
|
|
11
|
+
`bun` executable.
|
|
12
|
+
</Note>
|
|
10
13
|
|
|
11
|
-
```ts
|
|
14
|
+
```ts parent.ts icon="/icons/typescript.svg"
|
|
12
15
|
const child = Bun.spawn(["bun", "child.ts"], {
|
|
13
16
|
ipc(message) {
|
|
14
17
|
/**
|
|
@@ -22,13 +25,13 @@ const child = Bun.spawn(["bun", "child.ts"], {
|
|
|
22
25
|
|
|
23
26
|
The parent process can send messages to the subprocess using the `.send()` method on the returned `Subprocess` instance. A reference to the sending subprocess is also available as the second argument in the `ipc` handler.
|
|
24
27
|
|
|
25
|
-
```ts
|
|
28
|
+
```ts parent.ts icon="/icons/typescript.svg"
|
|
26
29
|
const childProc = Bun.spawn(["bun", "child.ts"], {
|
|
27
30
|
ipc(message, childProc) {
|
|
28
31
|
/**
|
|
29
32
|
* The message received from the sub process
|
|
30
33
|
**/
|
|
31
|
-
childProc.send("Respond to child")
|
|
34
|
+
childProc.send("Respond to child");
|
|
32
35
|
},
|
|
33
36
|
});
|
|
34
37
|
|
|
@@ -39,11 +42,11 @@ childProc.send("I am your father"); // The parent can send messages to the child
|
|
|
39
42
|
|
|
40
43
|
Meanwhile the child process can send messages to its parent using with `process.send()` and receive messages with `process.on("message")`. This is the same API used for `child_process.fork()` in Node.js.
|
|
41
44
|
|
|
42
|
-
```ts
|
|
45
|
+
```ts child.ts icon="/icons/typescript.svg"
|
|
43
46
|
process.send("Hello from child as string");
|
|
44
47
|
process.send({ message: "Hello from child as object" });
|
|
45
48
|
|
|
46
|
-
process.on("message",
|
|
49
|
+
process.on("message", message => {
|
|
47
50
|
// print message from parent
|
|
48
51
|
console.log(message);
|
|
49
52
|
});
|
|
@@ -53,7 +56,7 @@ process.on("message", (message) => {
|
|
|
53
56
|
|
|
54
57
|
All messages are serialized using the JSC `serialize` API, which allows for the same set of [transferrable types](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Transferable_objects) supported by `postMessage` and `structuredClone`, including strings, typed arrays, streams, and objects.
|
|
55
58
|
|
|
56
|
-
```ts
|
|
59
|
+
```ts child.ts icon="/icons/typescript.svg"
|
|
57
60
|
// send a string
|
|
58
61
|
process.send("Hello from child as string");
|
|
59
62
|
|