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.
Files changed (316) hide show
  1. package/bun.d.ts +102 -6
  2. package/docs/bundler/bytecode.mdx +465 -0
  3. package/docs/bundler/css.mdx +1024 -0
  4. package/docs/bundler/esbuild.mdx +253 -0
  5. package/docs/bundler/executables.mdx +535 -0
  6. package/docs/bundler/fullstack.mdx +1064 -0
  7. package/docs/bundler/hot-reloading.mdx +229 -0
  8. package/docs/bundler/html-static.mdx +386 -0
  9. package/docs/bundler/index.mdx +1499 -0
  10. package/docs/bundler/loaders.mdx +356 -0
  11. package/docs/bundler/macros.mdx +328 -0
  12. package/docs/bundler/minifier.mdx +1306 -0
  13. package/docs/bundler/plugins.mdx +411 -0
  14. package/docs/feedback.mdx +85 -0
  15. package/docs/guides/binary/arraybuffer-to-array.mdx +29 -0
  16. package/docs/guides/binary/arraybuffer-to-blob.mdx +26 -0
  17. package/docs/guides/binary/arraybuffer-to-buffer.mdx +27 -0
  18. package/docs/guides/binary/arraybuffer-to-string.mdx +17 -0
  19. package/docs/guides/binary/arraybuffer-to-typedarray.mdx +41 -0
  20. package/docs/guides/binary/blob-to-arraybuffer.mdx +16 -0
  21. package/docs/guides/binary/blob-to-dataview.mdx +16 -0
  22. package/docs/guides/binary/blob-to-stream.mdx +16 -0
  23. package/docs/guides/binary/blob-to-string.mdx +17 -0
  24. package/docs/guides/binary/blob-to-typedarray.mdx +16 -0
  25. package/docs/guides/binary/buffer-to-arraybuffer.mdx +16 -0
  26. package/docs/guides/binary/buffer-to-blob.mdx +16 -0
  27. package/docs/guides/binary/buffer-to-readablestream.mdx +43 -0
  28. package/docs/guides/binary/buffer-to-string.mdx +27 -0
  29. package/docs/guides/binary/buffer-to-typedarray.mdx +16 -0
  30. package/docs/guides/binary/dataview-to-string.mdx +17 -0
  31. package/docs/guides/binary/typedarray-to-arraybuffer.mdx +27 -0
  32. package/docs/guides/binary/typedarray-to-blob.mdx +18 -0
  33. package/docs/guides/binary/typedarray-to-buffer.mdx +16 -0
  34. package/docs/guides/binary/typedarray-to-dataview.mdx +16 -0
  35. package/docs/guides/binary/typedarray-to-readablestream.mdx +43 -0
  36. package/docs/guides/binary/typedarray-to-string.mdx +18 -0
  37. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  38. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  39. package/docs/guides/deployment/google-cloud-run.mdx +197 -0
  40. package/docs/guides/deployment/railway.mdx +145 -0
  41. package/docs/guides/deployment/render.mdx +82 -0
  42. package/docs/guides/deployment/vercel.mdx +99 -0
  43. package/docs/guides/ecosystem/astro.mdx +82 -0
  44. package/docs/guides/ecosystem/discordjs.mdx +80 -0
  45. package/docs/guides/ecosystem/docker.mdx +151 -0
  46. package/docs/guides/ecosystem/drizzle.mdx +195 -0
  47. package/docs/guides/ecosystem/edgedb.mdx +257 -0
  48. package/docs/guides/ecosystem/elysia.mdx +31 -0
  49. package/docs/guides/ecosystem/express.mdx +43 -0
  50. package/docs/guides/ecosystem/hono.mdx +47 -0
  51. package/docs/guides/ecosystem/mongoose.mdx +92 -0
  52. package/docs/guides/ecosystem/neon-drizzle.mdx +234 -0
  53. package/docs/guides/ecosystem/neon-serverless-postgres.mdx +60 -0
  54. package/docs/guides/ecosystem/nextjs.mdx +57 -0
  55. package/docs/guides/ecosystem/nuxt.mdx +90 -0
  56. package/docs/guides/ecosystem/pm2.mdx +55 -0
  57. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  58. package/docs/guides/ecosystem/prisma.mdx +164 -0
  59. package/docs/guides/ecosystem/qwik.mdx +114 -0
  60. package/docs/guides/ecosystem/react.mdx +52 -0
  61. package/docs/guides/ecosystem/remix.mdx +97 -0
  62. package/docs/guides/ecosystem/sentry.mdx +54 -0
  63. package/docs/guides/ecosystem/solidstart.mdx +66 -0
  64. package/docs/guides/ecosystem/ssr-react.mdx +49 -0
  65. package/docs/guides/ecosystem/stric.mdx +54 -0
  66. package/docs/guides/ecosystem/sveltekit.mdx +138 -0
  67. package/docs/guides/ecosystem/systemd.mdx +114 -0
  68. package/docs/guides/ecosystem/upstash.mdx +87 -0
  69. package/docs/guides/ecosystem/vite.mdx +77 -0
  70. package/docs/guides/html-rewriter/extract-links.mdx +72 -0
  71. package/docs/guides/html-rewriter/extract-social-meta.mdx +97 -0
  72. package/docs/guides/http/cluster.mdx +69 -0
  73. package/docs/guides/http/fetch-unix.mdx +35 -0
  74. package/docs/guides/http/fetch.mdx +26 -0
  75. package/docs/guides/http/file-uploads.mdx +97 -0
  76. package/docs/guides/http/hot.mdx +28 -0
  77. package/docs/guides/http/proxy.mdx +26 -0
  78. package/docs/guides/http/server.mdx +48 -0
  79. package/docs/guides/http/simple.mdx +20 -0
  80. package/docs/guides/http/stream-file.mdx +50 -0
  81. package/docs/guides/http/stream-iterator.mdx +49 -0
  82. package/docs/guides/http/stream-node-streams-in-bun.mdx +22 -0
  83. package/docs/guides/http/tls.mdx +32 -0
  84. package/docs/guides/index.mdx +10 -0
  85. package/docs/guides/install/add-dev.mdx +28 -0
  86. package/docs/guides/install/add-git.mdx +38 -0
  87. package/docs/guides/install/add-optional.mdx +27 -0
  88. package/docs/guides/install/add-peer.mdx +45 -0
  89. package/docs/guides/install/add-tarball.mdx +35 -0
  90. package/docs/guides/install/add.mdx +44 -0
  91. package/docs/guides/install/azure-artifacts.mdx +76 -0
  92. package/docs/guides/install/cicd.mdx +43 -0
  93. package/docs/guides/install/custom-registry.mdx +32 -0
  94. package/docs/guides/install/from-npm-install-to-bun-install.mdx +230 -0
  95. package/docs/guides/install/git-diff-bun-lockfile.mdx +47 -0
  96. package/docs/guides/install/jfrog-artifactory.mdx +28 -0
  97. package/docs/guides/install/npm-alias.mdx +25 -0
  98. package/docs/guides/install/registry-scope.mdx +40 -0
  99. package/docs/guides/install/trusted.mdx +50 -0
  100. package/docs/guides/install/workspaces.mdx +70 -0
  101. package/docs/guides/install/yarnlock.mdx +50 -0
  102. package/docs/guides/process/argv.mdx +66 -0
  103. package/docs/guides/process/ctrl-c.mdx +18 -0
  104. package/docs/guides/process/ipc.mdx +69 -0
  105. package/docs/guides/process/nanoseconds.mdx +15 -0
  106. package/docs/guides/process/os-signals.mdx +41 -0
  107. package/docs/guides/process/spawn-stderr.mdx +34 -0
  108. package/docs/guides/process/spawn-stdout.mdx +28 -0
  109. package/docs/guides/process/spawn.mdx +43 -0
  110. package/docs/guides/process/stdin.mdx +62 -0
  111. package/docs/guides/read-file/arraybuffer.mdx +30 -0
  112. package/docs/guides/read-file/buffer.mdx +21 -0
  113. package/docs/guides/read-file/exists.mdx +18 -0
  114. package/docs/guides/read-file/json.mdx +19 -0
  115. package/docs/guides/read-file/mime.mdx +22 -0
  116. package/docs/guides/read-file/stream.mdx +28 -0
  117. package/docs/guides/read-file/string.mdx +24 -0
  118. package/docs/guides/read-file/uint8array.mdx +23 -0
  119. package/docs/guides/read-file/watch.mdx +66 -0
  120. package/docs/guides/runtime/build-time-constants.mdx +295 -0
  121. package/docs/guides/runtime/cicd.mdx +45 -0
  122. package/docs/guides/runtime/codesign-macos-executable.mdx +61 -0
  123. package/docs/guides/runtime/define-constant.mdx +149 -0
  124. package/docs/guides/runtime/delete-directory.mdx +39 -0
  125. package/docs/guides/runtime/delete-file.mdx +21 -0
  126. package/docs/guides/runtime/heap-snapshot.mdx +28 -0
  127. package/docs/guides/runtime/import-html.mdx +17 -0
  128. package/docs/guides/runtime/import-json.mdx +46 -0
  129. package/docs/guides/runtime/import-toml.mdx +32 -0
  130. package/docs/guides/runtime/import-yaml.mdx +104 -0
  131. package/docs/guides/runtime/read-env.mdx +37 -0
  132. package/docs/guides/runtime/set-env.mdx +51 -0
  133. package/docs/guides/runtime/shell.mdx +42 -0
  134. package/docs/guides/runtime/timezone.mdx +38 -0
  135. package/docs/guides/runtime/tsconfig-paths.mdx +31 -0
  136. package/docs/guides/runtime/typescript.mdx +51 -0
  137. package/docs/guides/runtime/vscode-debugger.mdx +48 -0
  138. package/docs/guides/runtime/web-debugger.mdx +103 -0
  139. package/docs/guides/streams/node-readable-to-arraybuffer.mdx +13 -0
  140. package/docs/guides/streams/node-readable-to-blob.mdx +13 -0
  141. package/docs/guides/streams/node-readable-to-json.mdx +14 -0
  142. package/docs/guides/streams/node-readable-to-string.mdx +14 -0
  143. package/docs/guides/streams/node-readable-to-uint8array.mdx +13 -0
  144. package/docs/guides/streams/to-array.mdx +16 -0
  145. package/docs/guides/streams/to-arraybuffer.mdx +16 -0
  146. package/docs/guides/streams/to-blob.mdx +16 -0
  147. package/docs/guides/streams/to-buffer.mdx +17 -0
  148. package/docs/guides/streams/to-json.mdx +16 -0
  149. package/docs/guides/streams/to-string.mdx +16 -0
  150. package/docs/guides/streams/to-typedarray.mdx +24 -0
  151. package/docs/guides/test/bail.mdx +24 -0
  152. package/docs/guides/test/coverage-threshold.mdx +67 -0
  153. package/docs/guides/test/coverage.mdx +49 -0
  154. package/docs/guides/test/happy-dom.mdx +73 -0
  155. package/docs/guides/test/migrate-from-jest.mdx +125 -0
  156. package/docs/guides/test/mock-clock.mdx +50 -0
  157. package/docs/guides/test/mock-functions.mdx +70 -0
  158. package/docs/guides/test/rerun-each.mdx +16 -0
  159. package/docs/guides/test/run-tests.mdx +116 -0
  160. package/docs/guides/test/skip-tests.mdx +43 -0
  161. package/docs/guides/test/snapshot.mdx +102 -0
  162. package/docs/guides/test/spy-on.mdx +49 -0
  163. package/docs/guides/test/svelte-test.mdx +113 -0
  164. package/docs/guides/test/testing-library.mdx +93 -0
  165. package/docs/guides/test/timeout.mdx +17 -0
  166. package/docs/guides/test/todo-tests.mdx +74 -0
  167. package/docs/guides/test/update-snapshots.mdx +49 -0
  168. package/docs/guides/test/watch-mode.mdx +24 -0
  169. package/docs/guides/util/base64.mdx +17 -0
  170. package/docs/guides/util/deep-equals.mdx +41 -0
  171. package/docs/guides/util/deflate.mdx +20 -0
  172. package/docs/guides/util/detect-bun.mdx +25 -0
  173. package/docs/guides/util/entrypoint.mdx +19 -0
  174. package/docs/guides/util/escape-html.mdx +24 -0
  175. package/docs/guides/util/file-url-to-path.mdx +16 -0
  176. package/docs/guides/util/gzip.mdx +20 -0
  177. package/docs/guides/util/hash-a-password.mdx +56 -0
  178. package/docs/guides/util/import-meta-dir.mdx +15 -0
  179. package/docs/guides/util/import-meta-file.mdx +15 -0
  180. package/docs/guides/util/import-meta-path.mdx +15 -0
  181. package/docs/guides/util/javascript-uuid.mdx +25 -0
  182. package/docs/guides/util/main.mdx +43 -0
  183. package/docs/guides/util/path-to-file-url.mdx +16 -0
  184. package/docs/guides/util/sleep.mdx +24 -0
  185. package/docs/guides/util/version.mdx +23 -0
  186. package/docs/guides/util/which-path-to-executable-bin.mdx +17 -0
  187. package/docs/guides/websocket/compression.mdx +33 -0
  188. package/docs/guides/websocket/context.mdx +74 -0
  189. package/docs/guides/websocket/pubsub.mdx +40 -0
  190. package/docs/guides/websocket/simple.mdx +35 -0
  191. package/docs/guides/write-file/append.mdx +54 -0
  192. package/docs/guides/write-file/basic.mdx +46 -0
  193. package/docs/guides/write-file/blob.mdx +30 -0
  194. package/docs/guides/write-file/cat.mdx +19 -0
  195. package/docs/guides/write-file/file-cp.mdx +18 -0
  196. package/docs/guides/write-file/filesink.mdx +54 -0
  197. package/docs/guides/write-file/response.mdx +19 -0
  198. package/docs/guides/write-file/stdout.mdx +23 -0
  199. package/docs/guides/write-file/stream.mdx +19 -0
  200. package/docs/guides/write-file/unlink.mdx +18 -0
  201. package/docs/index.mdx +133 -0
  202. package/docs/installation.mdx +365 -0
  203. package/docs/pm/bunx.mdx +83 -0
  204. package/docs/pm/catalogs.mdx +292 -0
  205. package/docs/pm/cli/add.mdx +179 -0
  206. package/docs/pm/cli/audit.mdx +60 -0
  207. package/docs/pm/cli/install.mdx +471 -0
  208. package/docs/pm/cli/link.mdx +48 -0
  209. package/docs/pm/cli/outdated.mdx +197 -0
  210. package/docs/pm/cli/patch.mdx +69 -0
  211. package/docs/pm/cli/pm.mdx +319 -0
  212. package/docs/pm/cli/publish.mdx +123 -0
  213. package/docs/pm/cli/remove.mdx +16 -0
  214. package/docs/pm/cli/update.mdx +140 -0
  215. package/docs/pm/cli/why.mdx +84 -0
  216. package/docs/pm/filter.mdx +102 -0
  217. package/docs/pm/global-cache.mdx +72 -0
  218. package/docs/pm/isolated-installs.mdx +205 -0
  219. package/docs/pm/lifecycle.mdx +57 -0
  220. package/docs/pm/lockfile.mdx +64 -0
  221. package/docs/pm/npmrc.mdx +111 -0
  222. package/docs/pm/overrides.mdx +83 -0
  223. package/docs/pm/scopes-registries.mdx +35 -0
  224. package/docs/pm/security-scanner-api.mdx +95 -0
  225. package/docs/pm/workspaces.mdx +109 -0
  226. package/docs/project/benchmarking.mdx +218 -0
  227. package/docs/project/bindgen.mdx +223 -0
  228. package/docs/project/building-windows.mdx +133 -0
  229. package/docs/project/contributing.mdx +343 -0
  230. package/docs/project/feedback.mdx +20 -0
  231. package/docs/project/license.mdx +78 -0
  232. package/docs/project/roadmap.mdx +8 -0
  233. package/docs/quickstart.mdx +240 -0
  234. package/docs/runtime/auto-install.mdx +97 -0
  235. package/docs/runtime/binary-data.mdx +846 -0
  236. package/docs/runtime/bun-apis.mdx +59 -0
  237. package/docs/runtime/bunfig.mdx +642 -0
  238. package/docs/runtime/c-compiler.mdx +204 -0
  239. package/docs/runtime/child-process.mdx +532 -0
  240. package/docs/runtime/color.mdx +267 -0
  241. package/docs/runtime/console.mdx +67 -0
  242. package/docs/runtime/cookies.mdx +454 -0
  243. package/docs/runtime/debugger.mdx +335 -0
  244. package/docs/runtime/environment-variables.mdx +214 -0
  245. package/docs/runtime/ffi.mdx +565 -0
  246. package/docs/runtime/file-io.mdx +306 -0
  247. package/docs/runtime/file-system-router.mdx +118 -0
  248. package/docs/runtime/file-types.mdx +354 -0
  249. package/docs/runtime/glob.mdx +181 -0
  250. package/docs/runtime/globals.mdx +72 -0
  251. package/docs/runtime/hashing.mdx +315 -0
  252. package/docs/runtime/html-rewriter.mdx +340 -0
  253. package/docs/runtime/http/cookies.mdx +79 -0
  254. package/docs/runtime/http/error-handling.mdx +40 -0
  255. package/docs/runtime/http/metrics.mdx +36 -0
  256. package/docs/runtime/http/routing.mdx +289 -0
  257. package/docs/runtime/http/server.mdx +647 -0
  258. package/docs/runtime/http/tls.mdx +101 -0
  259. package/docs/runtime/http/websockets.mdx +404 -0
  260. package/docs/runtime/index.mdx +223 -0
  261. package/docs/runtime/jsx.mdx +115 -0
  262. package/docs/runtime/module-resolution.mdx +342 -0
  263. package/docs/runtime/networking/dns.mdx +111 -0
  264. package/docs/runtime/networking/fetch.mdx +468 -0
  265. package/docs/runtime/networking/tcp.mdx +239 -0
  266. package/docs/runtime/networking/udp.mdx +129 -0
  267. package/docs/runtime/node-api.mdx +19 -0
  268. package/docs/runtime/nodejs-compat.mdx +468 -0
  269. package/docs/runtime/plugins.mdx +405 -0
  270. package/docs/runtime/redis.mdx +582 -0
  271. package/docs/runtime/s3.mdx +863 -0
  272. package/docs/runtime/secrets.mdx +336 -0
  273. package/docs/runtime/semver.mdx +57 -0
  274. package/docs/runtime/shell.mdx +637 -0
  275. package/docs/runtime/sql.mdx +1404 -0
  276. package/docs/runtime/sqlite.mdx +699 -0
  277. package/docs/runtime/streams.mdx +232 -0
  278. package/docs/runtime/templating/create.mdx +269 -0
  279. package/docs/runtime/templating/init.mdx +58 -0
  280. package/docs/runtime/transpiler.mdx +288 -0
  281. package/docs/runtime/typescript.mdx +58 -0
  282. package/docs/runtime/utils.mdx +922 -0
  283. package/docs/runtime/watch-mode.mdx +161 -0
  284. package/docs/runtime/web-apis.mdx +29 -0
  285. package/docs/runtime/workers.mdx +328 -0
  286. package/docs/runtime/yaml.mdx +469 -0
  287. package/docs/snippets/cli/add.mdx +166 -0
  288. package/docs/snippets/cli/build.mdx +196 -0
  289. package/docs/snippets/cli/feedback.mdx +17 -0
  290. package/docs/snippets/cli/init.mdx +84 -0
  291. package/docs/snippets/cli/install.mdx +173 -0
  292. package/docs/snippets/cli/link.mdx +163 -0
  293. package/docs/snippets/cli/outdated.mdx +140 -0
  294. package/docs/snippets/cli/patch.mdx +171 -0
  295. package/docs/snippets/cli/publish.mdx +198 -0
  296. package/docs/snippets/cli/remove.mdx +146 -0
  297. package/docs/snippets/cli/run.mdx +293 -0
  298. package/docs/snippets/cli/test.mdx +100 -0
  299. package/docs/snippets/cli/update.mdx +144 -0
  300. package/docs/snippets/product-card.mdx +32 -0
  301. package/docs/snippets/product-tiles.mdx +94 -0
  302. package/docs/test/code-coverage.mdx +409 -0
  303. package/docs/test/configuration.mdx +467 -0
  304. package/docs/test/dates-times.mdx +129 -0
  305. package/docs/test/discovery.mdx +90 -0
  306. package/docs/test/dom.mdx +226 -0
  307. package/docs/test/index.mdx +380 -0
  308. package/docs/test/lifecycle.mdx +348 -0
  309. package/docs/test/mocks.mdx +637 -0
  310. package/docs/test/reporters.mdx +117 -0
  311. package/docs/test/runtime-behavior.mdx +342 -0
  312. package/docs/test/snapshots.mdx +434 -0
  313. package/docs/test/writing-tests.mdx +635 -0
  314. package/docs/typescript.mdx +54 -0
  315. package/package.json +8 -6
  316. 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
+ ![Bun installation speed
24
+ comparison](https://user-images.githubusercontent.com/709451/147004342-571b6123-17a9-49a2-8bfd-dcfc5204047e.png)
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 />