bun-types 1.3.2-canary.20251106T140813 → 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/bundler/bytecode.mdx +465 -0
- package/docs/bundler/css.mdx +1024 -0
- package/docs/bundler/esbuild.mdx +253 -0
- package/docs/bundler/executables.mdx +535 -0
- package/docs/bundler/fullstack.mdx +1064 -0
- package/docs/bundler/hot-reloading.mdx +229 -0
- package/docs/bundler/html-static.mdx +386 -0
- package/docs/bundler/index.mdx +1499 -0
- package/docs/bundler/loaders.mdx +356 -0
- package/docs/bundler/macros.mdx +328 -0
- 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.mdx +29 -0
- package/docs/guides/binary/arraybuffer-to-blob.mdx +26 -0
- package/docs/guides/binary/arraybuffer-to-buffer.mdx +27 -0
- package/docs/guides/binary/arraybuffer-to-string.mdx +17 -0
- package/docs/guides/binary/arraybuffer-to-typedarray.mdx +41 -0
- package/docs/guides/binary/blob-to-arraybuffer.mdx +16 -0
- package/docs/guides/binary/blob-to-dataview.mdx +16 -0
- package/docs/guides/binary/blob-to-stream.mdx +16 -0
- package/docs/guides/binary/blob-to-string.mdx +17 -0
- package/docs/guides/binary/blob-to-typedarray.mdx +16 -0
- package/docs/guides/binary/buffer-to-arraybuffer.mdx +16 -0
- package/docs/guides/binary/buffer-to-blob.mdx +16 -0
- package/docs/guides/binary/buffer-to-readablestream.mdx +43 -0
- package/docs/guides/binary/buffer-to-string.mdx +27 -0
- package/docs/guides/binary/buffer-to-typedarray.mdx +16 -0
- package/docs/guides/binary/dataview-to-string.mdx +17 -0
- package/docs/guides/binary/typedarray-to-arraybuffer.mdx +27 -0
- package/docs/guides/binary/typedarray-to-blob.mdx +18 -0
- package/docs/guides/binary/typedarray-to-buffer.mdx +16 -0
- package/docs/guides/binary/typedarray-to-dataview.mdx +16 -0
- package/docs/guides/binary/typedarray-to-readablestream.mdx +43 -0
- package/docs/guides/binary/typedarray-to-string.mdx +18 -0
- 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.mdx +145 -0
- package/docs/guides/deployment/render.mdx +82 -0
- package/docs/guides/deployment/vercel.mdx +99 -0
- package/docs/guides/ecosystem/astro.mdx +82 -0
- package/docs/guides/ecosystem/discordjs.mdx +80 -0
- package/docs/guides/ecosystem/docker.mdx +151 -0
- package/docs/guides/ecosystem/drizzle.mdx +195 -0
- package/docs/guides/ecosystem/edgedb.mdx +257 -0
- package/docs/guides/ecosystem/elysia.mdx +31 -0
- package/docs/guides/ecosystem/express.mdx +43 -0
- package/docs/guides/ecosystem/hono.mdx +47 -0
- package/docs/guides/ecosystem/mongoose.mdx +92 -0
- package/docs/guides/ecosystem/neon-drizzle.mdx +234 -0
- package/docs/guides/ecosystem/neon-serverless-postgres.mdx +60 -0
- package/docs/guides/ecosystem/nextjs.mdx +57 -0
- package/docs/guides/ecosystem/nuxt.mdx +90 -0
- package/docs/guides/ecosystem/pm2.mdx +55 -0
- package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
- package/docs/guides/ecosystem/prisma.mdx +164 -0
- package/docs/guides/ecosystem/qwik.mdx +114 -0
- package/docs/guides/ecosystem/react.mdx +52 -0
- package/docs/guides/ecosystem/remix.mdx +97 -0
- package/docs/guides/ecosystem/sentry.mdx +54 -0
- package/docs/guides/ecosystem/solidstart.mdx +66 -0
- package/docs/guides/ecosystem/ssr-react.mdx +49 -0
- package/docs/guides/ecosystem/stric.mdx +54 -0
- package/docs/guides/ecosystem/sveltekit.mdx +138 -0
- package/docs/guides/ecosystem/systemd.mdx +114 -0
- package/docs/guides/ecosystem/upstash.mdx +87 -0
- package/docs/guides/ecosystem/vite.mdx +77 -0
- package/docs/guides/html-rewriter/extract-links.mdx +72 -0
- package/docs/guides/html-rewriter/extract-social-meta.mdx +97 -0
- package/docs/guides/http/cluster.mdx +69 -0
- package/docs/guides/http/fetch-unix.mdx +35 -0
- package/docs/guides/http/fetch.mdx +26 -0
- package/docs/guides/http/file-uploads.mdx +97 -0
- package/docs/guides/http/hot.mdx +28 -0
- package/docs/guides/http/proxy.mdx +26 -0
- package/docs/guides/http/server.mdx +48 -0
- package/docs/guides/http/simple.mdx +20 -0
- package/docs/guides/http/stream-file.mdx +50 -0
- package/docs/guides/http/stream-iterator.mdx +49 -0
- package/docs/guides/http/stream-node-streams-in-bun.mdx +22 -0
- package/docs/guides/http/tls.mdx +32 -0
- package/docs/guides/index.mdx +10 -0
- package/docs/guides/install/add-dev.mdx +28 -0
- package/docs/guides/install/add-git.mdx +38 -0
- package/docs/guides/install/add-optional.mdx +27 -0
- package/docs/guides/install/add-peer.mdx +45 -0
- package/docs/guides/install/add-tarball.mdx +35 -0
- package/docs/guides/install/add.mdx +44 -0
- package/docs/guides/install/azure-artifacts.mdx +76 -0
- package/docs/guides/install/cicd.mdx +43 -0
- package/docs/guides/install/custom-registry.mdx +32 -0
- package/docs/guides/install/from-npm-install-to-bun-install.mdx +230 -0
- package/docs/guides/install/git-diff-bun-lockfile.mdx +47 -0
- package/docs/guides/install/jfrog-artifactory.mdx +28 -0
- package/docs/guides/install/npm-alias.mdx +25 -0
- package/docs/guides/install/registry-scope.mdx +40 -0
- package/docs/guides/install/trusted.mdx +50 -0
- package/docs/guides/install/workspaces.mdx +70 -0
- package/docs/guides/install/yarnlock.mdx +50 -0
- package/docs/guides/process/argv.mdx +66 -0
- package/docs/guides/process/ctrl-c.mdx +18 -0
- package/docs/guides/process/ipc.mdx +69 -0
- package/docs/guides/process/nanoseconds.mdx +15 -0
- package/docs/guides/process/os-signals.mdx +41 -0
- package/docs/guides/process/spawn-stderr.mdx +34 -0
- package/docs/guides/process/spawn-stdout.mdx +28 -0
- package/docs/guides/process/spawn.mdx +43 -0
- package/docs/guides/process/stdin.mdx +62 -0
- package/docs/guides/read-file/arraybuffer.mdx +30 -0
- package/docs/guides/read-file/buffer.mdx +21 -0
- package/docs/guides/read-file/exists.mdx +18 -0
- package/docs/guides/read-file/json.mdx +19 -0
- package/docs/guides/read-file/mime.mdx +22 -0
- package/docs/guides/read-file/stream.mdx +28 -0
- package/docs/guides/read-file/string.mdx +24 -0
- package/docs/guides/read-file/uint8array.mdx +23 -0
- package/docs/guides/read-file/watch.mdx +66 -0
- package/docs/guides/runtime/build-time-constants.mdx +295 -0
- package/docs/guides/runtime/cicd.mdx +45 -0
- package/docs/guides/runtime/codesign-macos-executable.mdx +61 -0
- package/docs/guides/runtime/define-constant.mdx +149 -0
- package/docs/guides/runtime/delete-directory.mdx +39 -0
- package/docs/guides/runtime/delete-file.mdx +21 -0
- package/docs/guides/runtime/heap-snapshot.mdx +28 -0
- package/docs/guides/runtime/import-html.mdx +17 -0
- package/docs/guides/runtime/import-json.mdx +46 -0
- package/docs/guides/runtime/import-toml.mdx +32 -0
- package/docs/guides/runtime/import-yaml.mdx +104 -0
- package/docs/guides/runtime/read-env.mdx +37 -0
- package/docs/guides/runtime/set-env.mdx +51 -0
- package/docs/guides/runtime/shell.mdx +42 -0
- package/docs/guides/runtime/timezone.mdx +38 -0
- package/docs/guides/runtime/tsconfig-paths.mdx +31 -0
- package/docs/guides/runtime/typescript.mdx +51 -0
- package/docs/guides/runtime/vscode-debugger.mdx +48 -0
- package/docs/guides/runtime/web-debugger.mdx +103 -0
- package/docs/guides/streams/node-readable-to-arraybuffer.mdx +13 -0
- package/docs/guides/streams/node-readable-to-blob.mdx +13 -0
- package/docs/guides/streams/node-readable-to-json.mdx +14 -0
- package/docs/guides/streams/node-readable-to-string.mdx +14 -0
- package/docs/guides/streams/node-readable-to-uint8array.mdx +13 -0
- package/docs/guides/streams/to-array.mdx +16 -0
- package/docs/guides/streams/to-arraybuffer.mdx +16 -0
- package/docs/guides/streams/to-blob.mdx +16 -0
- package/docs/guides/streams/to-buffer.mdx +17 -0
- package/docs/guides/streams/to-json.mdx +16 -0
- package/docs/guides/streams/to-string.mdx +16 -0
- package/docs/guides/streams/to-typedarray.mdx +24 -0
- package/docs/guides/test/bail.mdx +24 -0
- package/docs/guides/test/coverage-threshold.mdx +67 -0
- package/docs/guides/test/coverage.mdx +49 -0
- package/docs/guides/test/happy-dom.mdx +73 -0
- package/docs/guides/test/migrate-from-jest.mdx +125 -0
- package/docs/guides/test/mock-clock.mdx +50 -0
- package/docs/guides/test/mock-functions.mdx +70 -0
- package/docs/guides/test/rerun-each.mdx +16 -0
- package/docs/guides/test/run-tests.mdx +116 -0
- package/docs/guides/test/skip-tests.mdx +43 -0
- package/docs/guides/test/snapshot.mdx +102 -0
- package/docs/guides/test/spy-on.mdx +49 -0
- package/docs/guides/test/svelte-test.mdx +113 -0
- package/docs/guides/test/testing-library.mdx +93 -0
- package/docs/guides/test/timeout.mdx +17 -0
- package/docs/guides/test/todo-tests.mdx +74 -0
- package/docs/guides/test/update-snapshots.mdx +49 -0
- package/docs/guides/test/watch-mode.mdx +24 -0
- package/docs/guides/util/base64.mdx +17 -0
- package/docs/guides/util/deep-equals.mdx +41 -0
- package/docs/guides/util/deflate.mdx +20 -0
- package/docs/guides/util/detect-bun.mdx +25 -0
- package/docs/guides/util/entrypoint.mdx +19 -0
- package/docs/guides/util/escape-html.mdx +24 -0
- package/docs/guides/util/file-url-to-path.mdx +16 -0
- package/docs/guides/util/gzip.mdx +20 -0
- package/docs/guides/util/hash-a-password.mdx +56 -0
- package/docs/guides/util/import-meta-dir.mdx +15 -0
- package/docs/guides/util/import-meta-file.mdx +15 -0
- package/docs/guides/util/import-meta-path.mdx +15 -0
- package/docs/guides/util/javascript-uuid.mdx +25 -0
- package/docs/guides/util/main.mdx +43 -0
- package/docs/guides/util/path-to-file-url.mdx +16 -0
- package/docs/guides/util/sleep.mdx +24 -0
- package/docs/guides/util/version.mdx +23 -0
- package/docs/guides/util/which-path-to-executable-bin.mdx +17 -0
- package/docs/guides/websocket/compression.mdx +33 -0
- package/docs/guides/websocket/context.mdx +74 -0
- package/docs/guides/websocket/pubsub.mdx +40 -0
- package/docs/guides/websocket/simple.mdx +35 -0
- package/docs/guides/write-file/append.mdx +54 -0
- package/docs/guides/write-file/basic.mdx +46 -0
- package/docs/guides/write-file/blob.mdx +30 -0
- package/docs/guides/write-file/cat.mdx +19 -0
- package/docs/guides/write-file/file-cp.mdx +18 -0
- package/docs/guides/write-file/filesink.mdx +54 -0
- package/docs/guides/write-file/response.mdx +19 -0
- package/docs/guides/write-file/stdout.mdx +23 -0
- package/docs/guides/write-file/stream.mdx +19 -0
- package/docs/guides/write-file/unlink.mdx +18 -0
- package/docs/index.mdx +133 -0
- package/docs/installation.mdx +365 -0
- package/docs/pm/bunx.mdx +83 -0
- package/docs/pm/catalogs.mdx +292 -0
- package/docs/pm/cli/add.mdx +179 -0
- package/docs/pm/cli/audit.mdx +60 -0
- package/docs/pm/cli/install.mdx +471 -0
- package/docs/pm/cli/link.mdx +48 -0
- package/docs/pm/cli/outdated.mdx +197 -0
- package/docs/pm/cli/patch.mdx +69 -0
- package/docs/pm/cli/pm.mdx +319 -0
- package/docs/pm/cli/publish.mdx +123 -0
- package/docs/pm/cli/remove.mdx +16 -0
- package/docs/pm/cli/update.mdx +140 -0
- package/docs/pm/cli/why.mdx +84 -0
- package/docs/pm/filter.mdx +102 -0
- package/docs/pm/global-cache.mdx +72 -0
- package/docs/pm/isolated-installs.mdx +205 -0
- package/docs/pm/lifecycle.mdx +57 -0
- package/docs/pm/lockfile.mdx +64 -0
- package/docs/pm/npmrc.mdx +111 -0
- package/docs/pm/overrides.mdx +83 -0
- package/docs/pm/scopes-registries.mdx +35 -0
- package/docs/pm/security-scanner-api.mdx +95 -0
- package/docs/pm/workspaces.mdx +109 -0
- package/docs/project/benchmarking.mdx +218 -0
- package/docs/project/bindgen.mdx +223 -0
- package/docs/project/building-windows.mdx +133 -0
- package/docs/project/contributing.mdx +343 -0
- 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/auto-install.mdx +97 -0
- package/docs/runtime/binary-data.mdx +846 -0
- package/docs/runtime/bun-apis.mdx +59 -0
- package/docs/runtime/bunfig.mdx +642 -0
- package/docs/runtime/c-compiler.mdx +204 -0
- package/docs/runtime/child-process.mdx +532 -0
- package/docs/runtime/color.mdx +267 -0
- package/docs/runtime/console.mdx +67 -0
- package/docs/runtime/cookies.mdx +454 -0
- package/docs/runtime/debugger.mdx +335 -0
- package/docs/runtime/environment-variables.mdx +214 -0
- package/docs/runtime/ffi.mdx +565 -0
- package/docs/runtime/file-io.mdx +306 -0
- package/docs/runtime/file-system-router.mdx +118 -0
- package/docs/runtime/file-types.mdx +354 -0
- package/docs/runtime/glob.mdx +181 -0
- package/docs/runtime/globals.mdx +72 -0
- package/docs/runtime/hashing.mdx +315 -0
- package/docs/runtime/html-rewriter.mdx +340 -0
- 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/runtime/http/websockets.mdx +404 -0
- package/docs/runtime/index.mdx +223 -0
- package/docs/runtime/jsx.mdx +115 -0
- package/docs/runtime/module-resolution.mdx +342 -0
- package/docs/runtime/networking/dns.mdx +111 -0
- package/docs/runtime/networking/fetch.mdx +468 -0
- package/docs/runtime/networking/tcp.mdx +239 -0
- package/docs/runtime/networking/udp.mdx +129 -0
- package/docs/runtime/node-api.mdx +19 -0
- package/docs/runtime/nodejs-compat.mdx +468 -0
- package/docs/runtime/plugins.mdx +405 -0
- package/docs/runtime/redis.mdx +582 -0
- package/docs/runtime/s3.mdx +863 -0
- package/docs/runtime/secrets.mdx +336 -0
- package/docs/runtime/semver.mdx +57 -0
- package/docs/runtime/shell.mdx +637 -0
- package/docs/runtime/sql.mdx +1404 -0
- package/docs/runtime/sqlite.mdx +699 -0
- package/docs/runtime/streams.mdx +232 -0
- package/docs/runtime/templating/create.mdx +269 -0
- package/docs/runtime/templating/init.mdx +58 -0
- package/docs/runtime/transpiler.mdx +288 -0
- package/docs/runtime/typescript.mdx +58 -0
- package/docs/runtime/utils.mdx +922 -0
- package/docs/runtime/watch-mode.mdx +161 -0
- package/docs/runtime/web-apis.mdx +29 -0
- package/docs/runtime/workers.mdx +328 -0
- package/docs/runtime/yaml.mdx +469 -0
- 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/dates-times.mdx +129 -0
- package/docs/test/discovery.mdx +90 -0
- package/docs/test/dom.mdx +226 -0
- package/docs/test/index.mdx +380 -0
- package/docs/test/lifecycle.mdx +348 -0
- package/docs/test/mocks.mdx +637 -0
- package/docs/test/reporters.mdx +117 -0
- 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
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "bun install"
|
|
3
|
+
description: "Install packages with Bun's fast package manager"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import Install from "/snippets/cli/install.mdx";
|
|
7
|
+
|
|
8
|
+
## Basic Usage
|
|
9
|
+
|
|
10
|
+
```bash terminal icon="terminal"
|
|
11
|
+
bun install react
|
|
12
|
+
bun install react@19.1.1 # specific version
|
|
13
|
+
bun install react@latest # specific tag
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The `bun` CLI contains a Node.js-compatible package manager designed to be a dramatically faster replacement for `npm`, `yarn`, and `pnpm`. It's a standalone tool that will work in pre-existing Node.js projects; if your project has a `package.json`, `bun install` can help you speed up your workflow.
|
|
17
|
+
|
|
18
|
+
<Note>
|
|
19
|
+
|
|
20
|
+
**⚡️ 25x faster** — Switch from `npm install` to `bun install` in any Node.js project to make your installations up to 25x faster.
|
|
21
|
+
|
|
22
|
+
<Frame>
|
|
23
|
+

|
|
25
|
+
</Frame>
|
|
26
|
+
|
|
27
|
+
</Note>
|
|
28
|
+
|
|
29
|
+
<Accordion title="For Linux users">
|
|
30
|
+
The recommended minimum Linux Kernel version is 5.6. If you're on Linux kernel 5.1 - 5.5, `bun install` will work, but HTTP requests will be slow due to a lack of support for io_uring's `connect()` operation.
|
|
31
|
+
|
|
32
|
+
If you're using Ubuntu 20.04, here's how to install a [newer kernel](https://wiki.ubuntu.com/Kernel/LTSEnablementStack):
|
|
33
|
+
|
|
34
|
+
```bash terminal icon="terminal"
|
|
35
|
+
# If this returns a version >= 5.6, you don't need to do anything
|
|
36
|
+
uname -r
|
|
37
|
+
|
|
38
|
+
# Install the official Ubuntu hardware enablement kernel
|
|
39
|
+
sudo apt install --install-recommends linux-generic-hwe-20.04
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
</Accordion>
|
|
43
|
+
|
|
44
|
+
To install all dependencies of a project:
|
|
45
|
+
|
|
46
|
+
```bash terminal icon="terminal"
|
|
47
|
+
bun install
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Running `bun install` will:
|
|
51
|
+
|
|
52
|
+
- **Install** all `dependencies`, `devDependencies`, and `optionalDependencies`. Bun will install `peerDependencies` by default.
|
|
53
|
+
- **Run** your project's `{pre|post}install` and `{pre|post}prepare` scripts at the appropriate time. For security reasons Bun _does not execute_ lifecycle scripts of installed dependencies.
|
|
54
|
+
- **Write** a `bun.lock` lockfile to the project root.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Logging
|
|
59
|
+
|
|
60
|
+
To modify logging verbosity:
|
|
61
|
+
|
|
62
|
+
```bash terminal icon="terminal"
|
|
63
|
+
bun install --verbose # debug logging
|
|
64
|
+
bun install --silent # no logging
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Lifecycle scripts
|
|
70
|
+
|
|
71
|
+
Unlike other npm clients, Bun does not execute arbitrary lifecycle scripts like `postinstall` for installed dependencies. Executing arbitrary scripts represents a potential security risk.
|
|
72
|
+
|
|
73
|
+
To tell Bun to allow lifecycle scripts for a particular package, add the package to `trustedDependencies` in your package.json.
|
|
74
|
+
|
|
75
|
+
```json package.json icon="file-json"
|
|
76
|
+
{
|
|
77
|
+
"name": "my-app",
|
|
78
|
+
"version": "1.0.0",
|
|
79
|
+
"trustedDependencies": ["my-trusted-package"] // [!code ++]
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Then re-install the package. Bun will read this field and run lifecycle scripts for `my-trusted-package`.
|
|
84
|
+
|
|
85
|
+
Lifecycle scripts will run in parallel during installation. To adjust the maximum number of concurrent scripts, use the `--concurrent-scripts` flag. The default is two times the reported cpu count or GOMAXPROCS.
|
|
86
|
+
|
|
87
|
+
```bash terminal icon="terminal"
|
|
88
|
+
bun install --concurrent-scripts 5
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Workspaces
|
|
94
|
+
|
|
95
|
+
Bun supports `"workspaces"` in package.json. For complete documentation refer to [Package manager > Workspaces](/pm/workspaces).
|
|
96
|
+
|
|
97
|
+
```json package.json icon="file-json"
|
|
98
|
+
{
|
|
99
|
+
"name": "my-app",
|
|
100
|
+
"version": "1.0.0",
|
|
101
|
+
"workspaces": ["packages/*"], // [!code ++]
|
|
102
|
+
"dependencies": {
|
|
103
|
+
"preact": "^10.5.13"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Installing dependencies for specific packages
|
|
111
|
+
|
|
112
|
+
In a monorepo, you can install the dependencies for a subset of packages using the `--filter` flag.
|
|
113
|
+
|
|
114
|
+
```bash terminal icon="terminal"
|
|
115
|
+
# Install dependencies for all workspaces except `pkg-c`
|
|
116
|
+
bun install --filter '!pkg-c'
|
|
117
|
+
|
|
118
|
+
# Install dependencies for only `pkg-a` in `./packages/pkg-a`
|
|
119
|
+
bun install --filter './packages/pkg-a'
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
For more information on filtering with `bun install`, refer to [Package Manager > Filtering](/pm/filter#bun-install-and-bun-outdated)
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Overrides and resolutions
|
|
127
|
+
|
|
128
|
+
Bun supports npm's `"overrides"` and Yarn's `"resolutions"` in `package.json`. These are mechanisms for specifying a version range for _metadependencies_—the dependencies of your dependencies. Refer to [Package manager > Overrides and resolutions](/pm/overrides) for complete documentation.
|
|
129
|
+
|
|
130
|
+
```json package.json file="file-json"
|
|
131
|
+
{
|
|
132
|
+
"name": "my-app",
|
|
133
|
+
"dependencies": {
|
|
134
|
+
"foo": "^2.0.0"
|
|
135
|
+
},
|
|
136
|
+
"overrides": {
|
|
137
|
+
// [!code ++]
|
|
138
|
+
"bar": "~4.4.0" // [!code ++]
|
|
139
|
+
} // [!code ++]
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Global packages
|
|
146
|
+
|
|
147
|
+
To install a package globally, use the `-g`/`--global` flag. Typically this is used for installing command-line tools.
|
|
148
|
+
|
|
149
|
+
```bash terminal icon="terminal"
|
|
150
|
+
bun install --global cowsay # or `bun install -g cowsay`
|
|
151
|
+
cowsay "Bun!"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
```txt
|
|
155
|
+
______
|
|
156
|
+
< Bun! >
|
|
157
|
+
------
|
|
158
|
+
\ ^__^
|
|
159
|
+
\ (oo)\_______
|
|
160
|
+
(__)\ )\/\
|
|
161
|
+
||----w |
|
|
162
|
+
|| ||
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Production mode
|
|
168
|
+
|
|
169
|
+
To install in production mode (i.e. without `devDependencies` or `optionalDependencies`):
|
|
170
|
+
|
|
171
|
+
```bash terminal icon="terminal"
|
|
172
|
+
bun install --production
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
For reproducible installs, use `--frozen-lockfile`. This will install the exact versions of each package specified in the lockfile. If your `package.json` disagrees with `bun.lock`, Bun will exit with an error. The lockfile will not be updated.
|
|
176
|
+
|
|
177
|
+
```bash terminal icon="terminal"
|
|
178
|
+
bun install --frozen-lockfile
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
For more information on Bun's lockfile `bun.lock`, refer to [Package manager > Lockfile](/pm/lockfile).
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Omitting dependencies
|
|
186
|
+
|
|
187
|
+
To omit dev, peer, or optional dependencies use the `--omit` flag.
|
|
188
|
+
|
|
189
|
+
```bash terminal icon="terminal"
|
|
190
|
+
# Exclude "devDependencies" from the installation. This will apply to the
|
|
191
|
+
# root package and workspaces if they exist. Transitive dependencies will
|
|
192
|
+
# not have "devDependencies".
|
|
193
|
+
bun install --omit dev
|
|
194
|
+
|
|
195
|
+
# Install only dependencies from "dependencies"
|
|
196
|
+
bun install --omit=dev --omit=peer --omit=optional
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Dry run
|
|
202
|
+
|
|
203
|
+
To perform a dry run (i.e. don't actually install anything):
|
|
204
|
+
|
|
205
|
+
```bash terminal icon="terminal"
|
|
206
|
+
bun install --dry-run
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Non-npm dependencies
|
|
212
|
+
|
|
213
|
+
Bun supports installing dependencies from Git, GitHub, and local or remotely-hosted tarballs. For complete documentation refer to [Package manager > Git, GitHub, and tarball dependencies](/pm/cli/add).
|
|
214
|
+
|
|
215
|
+
```json package.json icon="file-json"
|
|
216
|
+
{
|
|
217
|
+
"dependencies": {
|
|
218
|
+
"dayjs": "git+https://github.com/iamkun/dayjs.git",
|
|
219
|
+
"lodash": "git+ssh://github.com/lodash/lodash.git#4.17.21",
|
|
220
|
+
"moment": "git@github.com:moment/moment.git",
|
|
221
|
+
"zod": "github:colinhacks/zod",
|
|
222
|
+
"react": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
|
|
223
|
+
"bun-types": "npm:@types/bun"
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Installation strategies
|
|
231
|
+
|
|
232
|
+
Bun supports two package installation strategies that determine how dependencies are organized in `node_modules`:
|
|
233
|
+
|
|
234
|
+
### Hoisted installs (default for single projects)
|
|
235
|
+
|
|
236
|
+
The traditional npm/Yarn approach that flattens dependencies into a shared `node_modules` directory:
|
|
237
|
+
|
|
238
|
+
```bash terminal icon="terminal"
|
|
239
|
+
bun install --linker hoisted
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Isolated installs
|
|
243
|
+
|
|
244
|
+
A pnpm-like approach that creates strict dependency isolation to prevent phantom dependencies:
|
|
245
|
+
|
|
246
|
+
```bash terminal icon="terminal"
|
|
247
|
+
bun install --linker isolated
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Isolated installs create a central package store in `node_modules/.bun/` with symlinks in the top-level `node_modules`. This ensures packages can only access their declared dependencies.
|
|
251
|
+
|
|
252
|
+
For complete documentation on isolated installs, refer to [Package manager > Isolated installs](/pm/isolated-installs).
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Minimum release age
|
|
257
|
+
|
|
258
|
+
To protect against supply chain attacks where malicious packages are quickly published, you can configure a minimum age requirement for npm packages. Package versions published more recently than the specified threshold (in seconds) will be filtered out during installation.
|
|
259
|
+
|
|
260
|
+
```bash terminal icon="terminal"
|
|
261
|
+
# Only install package versions published at least 3 days ago
|
|
262
|
+
bun add @types/bun --minimum-release-age 259200 # seconds
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
You can also configure this in `bunfig.toml`:
|
|
266
|
+
|
|
267
|
+
```toml bunfig.toml icon="settings"
|
|
268
|
+
[install]
|
|
269
|
+
# Only install package versions published at least 3 days ago
|
|
270
|
+
minimumReleaseAge = 259200 # seconds
|
|
271
|
+
|
|
272
|
+
# Exclude trusted packages from the age gate
|
|
273
|
+
minimumReleaseAgeExcludes = ["@types/node", "typescript"]
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
When the minimum age filter is active:
|
|
277
|
+
|
|
278
|
+
- Only affects new package resolution - existing packages in `bun.lock` remain unchanged
|
|
279
|
+
- All dependencies (direct and transitive) are filtered to meet the age requirement when being resolved
|
|
280
|
+
- When versions are blocked by the age gate, a stability check detects rapid bugfix patterns
|
|
281
|
+
- If multiple versions were published close together just outside your age gate, it extends the filter to skip those potentially unstable versions and selects an older, more mature version
|
|
282
|
+
- Searches up to 7 days after the age gate, however if still finding rapid releases it ignores stability check
|
|
283
|
+
- Exact version requests (like `package@1.1.1`) still respect the age gate but bypass the stability check
|
|
284
|
+
- Versions without a `time` field are treated as passing the age check (npm registry should always provide timestamps)
|
|
285
|
+
|
|
286
|
+
For more advanced security scanning, including integration with services & custom filtering, see [Package manager > Security Scanner API](/pm/security-scanner-api).
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Configuration
|
|
291
|
+
|
|
292
|
+
The default behavior of `bun install` can be configured in `bunfig.toml`. The default values are shown below.
|
|
293
|
+
|
|
294
|
+
```toml bunfig.toml icon="settings"
|
|
295
|
+
[install]
|
|
296
|
+
|
|
297
|
+
# whether to install optionalDependencies
|
|
298
|
+
optional = true
|
|
299
|
+
|
|
300
|
+
# whether to install devDependencies
|
|
301
|
+
dev = true
|
|
302
|
+
|
|
303
|
+
# whether to install peerDependencies
|
|
304
|
+
peer = true
|
|
305
|
+
|
|
306
|
+
# equivalent to `--production` flag
|
|
307
|
+
production = false
|
|
308
|
+
|
|
309
|
+
# equivalent to `--save-text-lockfile` flag
|
|
310
|
+
saveTextLockfile = false
|
|
311
|
+
|
|
312
|
+
# equivalent to `--frozen-lockfile` flag
|
|
313
|
+
frozenLockfile = false
|
|
314
|
+
|
|
315
|
+
# equivalent to `--dry-run` flag
|
|
316
|
+
dryRun = false
|
|
317
|
+
|
|
318
|
+
# equivalent to `--concurrent-scripts` flag
|
|
319
|
+
concurrentScripts = 16 # (cpu count or GOMAXPROCS) x2
|
|
320
|
+
|
|
321
|
+
# installation strategy: "hoisted" or "isolated"
|
|
322
|
+
# default: "hoisted" (for single-project projects)
|
|
323
|
+
# default: "isolated" (for monorepo projects)
|
|
324
|
+
linker = "hoisted"
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
# minimum age config
|
|
328
|
+
minimumReleaseAge = 259200 # seconds
|
|
329
|
+
minimumReleaseAgeExcludes = ["@types/node", "typescript"]
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## CI/CD
|
|
335
|
+
|
|
336
|
+
Use the official [`oven-sh/setup-bun`](https://github.com/oven-sh/setup-bun) action to install `bun` in a GitHub Actions pipeline:
|
|
337
|
+
|
|
338
|
+
```yaml .github/workflows/release.yml icon="file-code"
|
|
339
|
+
name: bun-types
|
|
340
|
+
jobs:
|
|
341
|
+
build:
|
|
342
|
+
name: build-app
|
|
343
|
+
runs-on: ubuntu-latest
|
|
344
|
+
steps:
|
|
345
|
+
- name: Checkout repo
|
|
346
|
+
uses: actions/checkout@v4
|
|
347
|
+
- name: Install bun
|
|
348
|
+
uses: oven-sh/setup-bun@v2
|
|
349
|
+
- name: Install dependencies
|
|
350
|
+
run: bun install
|
|
351
|
+
- name: Build app
|
|
352
|
+
run: bun run build
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
For CI/CD environments that want to enforce reproducible builds, use `bun ci` to fail the build if the package.json is out of sync with the lockfile:
|
|
356
|
+
|
|
357
|
+
```bash terminal icon="terminal"
|
|
358
|
+
bun ci
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
This is equivalent to `bun install --frozen-lockfile`. It installs exact versions from `bun.lock` and fails if `package.json` doesn't match the lockfile. To use `bun ci` or `bun install --frozen-lockfile`, you must commit `bun.lock` to version control.
|
|
362
|
+
|
|
363
|
+
And instead of running `bun install`, run `bun ci`.
|
|
364
|
+
|
|
365
|
+
```yaml .github/workflows/release.yml icon="file-code"
|
|
366
|
+
name: bun-types
|
|
367
|
+
jobs:
|
|
368
|
+
build:
|
|
369
|
+
name: build-app
|
|
370
|
+
runs-on: ubuntu-latest
|
|
371
|
+
steps:
|
|
372
|
+
- name: Checkout repo
|
|
373
|
+
uses: actions/checkout@v4
|
|
374
|
+
- name: Install bun
|
|
375
|
+
uses: oven-sh/setup-bun@v2
|
|
376
|
+
- name: Install dependencies
|
|
377
|
+
run: bun ci
|
|
378
|
+
- name: Build app
|
|
379
|
+
run: bun run build
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
## pnpm migration
|
|
383
|
+
|
|
384
|
+
Bun automatically migrates projects from pnpm to bun. When a `pnpm-lock.yaml` file is detected and no `bun.lock` file exists, Bun will automatically migrate the lockfile to `bun.lock` during installation. The original `pnpm-lock.yaml` file remains unmodified.
|
|
385
|
+
|
|
386
|
+
```bash terminal icon="terminal"
|
|
387
|
+
bun install
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
**Note**: Migration only runs when `bun.lock` is absent. There is currently no opt-out flag for pnpm migration.
|
|
391
|
+
|
|
392
|
+
The migration process handles:
|
|
393
|
+
|
|
394
|
+
### Lockfile Migration
|
|
395
|
+
|
|
396
|
+
- Converts `pnpm-lock.yaml` to `bun.lock` format
|
|
397
|
+
- Preserves package versions and resolution information
|
|
398
|
+
- Maintains dependency relationships and peer dependencies
|
|
399
|
+
- Handles patched dependencies with integrity hashes
|
|
400
|
+
|
|
401
|
+
### Workspace Configuration
|
|
402
|
+
|
|
403
|
+
When a `pnpm-workspace.yaml` file exists, Bun migrates workspace settings to your root `package.json`:
|
|
404
|
+
|
|
405
|
+
```yaml pnpm-workspace.yaml icon="file-code"
|
|
406
|
+
packages:
|
|
407
|
+
- "apps/*"
|
|
408
|
+
- "packages/*"
|
|
409
|
+
|
|
410
|
+
catalog:
|
|
411
|
+
react: ^18.0.0
|
|
412
|
+
typescript: ^5.0.0
|
|
413
|
+
|
|
414
|
+
catalogs:
|
|
415
|
+
build:
|
|
416
|
+
webpack: ^5.0.0
|
|
417
|
+
babel: ^7.0.0
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
The workspace packages list and catalogs are moved to the `workspaces` field in `package.json`:
|
|
421
|
+
|
|
422
|
+
```json package.json icon="file-json"
|
|
423
|
+
{
|
|
424
|
+
"workspaces": {
|
|
425
|
+
"packages": ["apps/*", "packages/*"],
|
|
426
|
+
"catalog": {
|
|
427
|
+
"react": "^18.0.0",
|
|
428
|
+
"typescript": "^5.0.0"
|
|
429
|
+
},
|
|
430
|
+
"catalogs": {
|
|
431
|
+
"build": {
|
|
432
|
+
"webpack": "^5.0.0",
|
|
433
|
+
"babel": "^7.0.0"
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
### Catalog Dependencies
|
|
441
|
+
|
|
442
|
+
Dependencies using pnpm's `catalog:` protocol are preserved:
|
|
443
|
+
|
|
444
|
+
```json package.json icon="file-json"
|
|
445
|
+
{
|
|
446
|
+
"dependencies": {
|
|
447
|
+
"react": "catalog:",
|
|
448
|
+
"webpack": "catalog:build"
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
### Configuration Migration
|
|
454
|
+
|
|
455
|
+
The following pnpm configuration is migrated from both `pnpm-lock.yaml` and `pnpm-workspace.yaml`:
|
|
456
|
+
|
|
457
|
+
- **Overrides**: Moved from `pnpm.overrides` to root-level `overrides` in `package.json`
|
|
458
|
+
- **Patched Dependencies**: Moved from `pnpm.patchedDependencies` to root-level `patchedDependencies` in `package.json`
|
|
459
|
+
- **Workspace Overrides**: Applied from `pnpm-workspace.yaml` to root `package.json`
|
|
460
|
+
|
|
461
|
+
### Requirements
|
|
462
|
+
|
|
463
|
+
- Requires pnpm lockfile version 7 or higher
|
|
464
|
+
- Workspace packages must have a `name` field in their `package.json`
|
|
465
|
+
- All catalog entries referenced by dependencies must exist in the catalogs definition
|
|
466
|
+
|
|
467
|
+
After migration, you can safely remove `pnpm-lock.yaml` and `pnpm-workspace.yaml` files.
|
|
468
|
+
|
|
469
|
+
---
|
|
470
|
+
|
|
471
|
+
<Install />
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "bun link"
|
|
3
|
+
description: "Link local packages for development"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import Link from "/snippets/cli/link.mdx";
|
|
7
|
+
|
|
8
|
+
Use `bun link` in a local directory to register the current package as a "linkable" package.
|
|
9
|
+
|
|
10
|
+
```bash terminal icon="terminal"
|
|
11
|
+
cd /path/to/cool-pkg
|
|
12
|
+
cat package.json
|
|
13
|
+
bun link
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
```txt
|
|
17
|
+
bun link v1.x (7416672e)
|
|
18
|
+
Success! Registered "cool-pkg"
|
|
19
|
+
|
|
20
|
+
To use cool-pkg in a project, run:
|
|
21
|
+
bun link cool-pkg
|
|
22
|
+
|
|
23
|
+
Or add it in dependencies in your package.json file:
|
|
24
|
+
"cool-pkg": "link:cool-pkg"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
This package can now be "linked" into other projects using `bun link cool-pkg`. This will create a symlink in the `node_modules` directory of the target project, pointing to the local directory.
|
|
28
|
+
|
|
29
|
+
```bash terminal icon="terminal"
|
|
30
|
+
cd /path/to/my-app
|
|
31
|
+
bun link cool-pkg
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
In addition, the `--save` flag can be used to add `cool-pkg` to the `dependencies` field of your app's package.json with a special version specifier that tells Bun to load from the registered local directory instead of installing from `npm`:
|
|
35
|
+
|
|
36
|
+
```json package.json icon="file-json"
|
|
37
|
+
{
|
|
38
|
+
"name": "my-app",
|
|
39
|
+
"version": "1.0.0",
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"cool-pkg": "link:cool-pkg" // [!code ++]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
<Link />
|