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.
Files changed (370) hide show
  1. package/bun.d.ts +102 -6
  2. package/docs/README.md +28 -0
  3. package/docs/bundler/bytecode.mdx +465 -0
  4. package/docs/bundler/{css.md → css.mdx} +97 -101
  5. package/docs/bundler/esbuild.mdx +253 -0
  6. package/docs/bundler/{executables.md → executables.mdx} +130 -221
  7. package/docs/bundler/fullstack.mdx +1064 -0
  8. package/docs/bundler/{hmr.md → hot-reloading.mdx} +74 -79
  9. package/docs/bundler/{html.md → html-static.mdx} +148 -111
  10. package/docs/bundler/index.mdx +1499 -0
  11. package/docs/bundler/loaders.mdx +356 -0
  12. package/docs/bundler/{macros.md → macros.mdx} +83 -84
  13. package/docs/bundler/minifier.mdx +1306 -0
  14. package/docs/bundler/plugins.mdx +411 -0
  15. package/docs/feedback.mdx +85 -0
  16. package/docs/guides/binary/{arraybuffer-to-array.md → arraybuffer-to-array.mdx} +3 -1
  17. package/docs/guides/binary/{arraybuffer-to-blob.md → arraybuffer-to-blob.mdx} +3 -1
  18. package/docs/guides/binary/{arraybuffer-to-buffer.md → arraybuffer-to-buffer.mdx} +3 -1
  19. package/docs/guides/binary/{arraybuffer-to-string.md → arraybuffer-to-string.mdx} +3 -1
  20. package/docs/guides/binary/{arraybuffer-to-typedarray.md → arraybuffer-to-typedarray.mdx} +3 -1
  21. package/docs/guides/binary/{blob-to-arraybuffer.md → blob-to-arraybuffer.mdx} +3 -1
  22. package/docs/guides/binary/{blob-to-dataview.md → blob-to-dataview.mdx} +3 -1
  23. package/docs/guides/binary/{blob-to-stream.md → blob-to-stream.mdx} +3 -1
  24. package/docs/guides/binary/{blob-to-string.md → blob-to-string.mdx} +3 -1
  25. package/docs/guides/binary/{blob-to-typedarray.md → blob-to-typedarray.mdx} +3 -1
  26. package/docs/guides/binary/{buffer-to-arraybuffer.md → buffer-to-arraybuffer.mdx} +3 -1
  27. package/docs/guides/binary/{buffer-to-blob.md → buffer-to-blob.mdx} +3 -1
  28. package/docs/guides/binary/{buffer-to-readablestream.md → buffer-to-readablestream.mdx} +3 -1
  29. package/docs/guides/binary/{buffer-to-string.md → buffer-to-string.mdx} +3 -1
  30. package/docs/guides/binary/{buffer-to-typedarray.md → buffer-to-typedarray.mdx} +3 -1
  31. package/docs/guides/binary/{dataview-to-string.md → dataview-to-string.mdx} +3 -1
  32. package/docs/guides/binary/{typedarray-to-arraybuffer.md → typedarray-to-arraybuffer.mdx} +3 -1
  33. package/docs/guides/binary/{typedarray-to-blob.md → typedarray-to-blob.mdx} +3 -1
  34. package/docs/guides/binary/{typedarray-to-buffer.md → typedarray-to-buffer.mdx} +3 -1
  35. package/docs/guides/binary/{typedarray-to-dataview.md → typedarray-to-dataview.mdx} +3 -1
  36. package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx} +3 -1
  37. package/docs/guides/binary/{typedarray-to-string.md → typedarray-to-string.mdx} +3 -1
  38. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  39. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  40. package/docs/guides/deployment/google-cloud-run.mdx +197 -0
  41. package/docs/guides/deployment/{railway.md → railway.mdx} +42 -54
  42. package/docs/guides/deployment/render.mdx +82 -0
  43. package/docs/guides/deployment/vercel.mdx +99 -0
  44. package/docs/guides/ecosystem/{astro.md → astro.mdx} +16 -6
  45. package/docs/guides/ecosystem/{discordjs.md → discordjs.mdx} +21 -18
  46. package/docs/guides/ecosystem/{docker.md → docker.mdx} +25 -14
  47. package/docs/guides/ecosystem/{drizzle.md → drizzle.mdx} +32 -22
  48. package/docs/guides/ecosystem/{edgedb.md → edgedb.mdx} +63 -34
  49. package/docs/guides/ecosystem/{elysia.md → elysia.mdx} +11 -11
  50. package/docs/guides/ecosystem/{express.md → express.mdx} +12 -9
  51. package/docs/guides/ecosystem/{hono.md → hono.mdx} +16 -8
  52. package/docs/guides/ecosystem/{mongoose.md → mongoose.mdx} +26 -21
  53. package/docs/guides/ecosystem/{neon-drizzle.md → neon-drizzle.mdx} +49 -35
  54. package/docs/guides/ecosystem/{neon-serverless-postgres.md → neon-serverless-postgres.mdx} +16 -11
  55. package/docs/guides/ecosystem/{nextjs.md → nextjs.mdx} +18 -10
  56. package/docs/guides/ecosystem/{nuxt.md → nuxt.mdx} +45 -11
  57. package/docs/guides/ecosystem/{pm2.md → pm2.mdx} +7 -9
  58. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  59. package/docs/guides/ecosystem/prisma.mdx +164 -0
  60. package/docs/guides/ecosystem/{qwik.md → qwik.mdx} +18 -11
  61. package/docs/guides/ecosystem/{react.md → react.mdx} +9 -7
  62. package/docs/guides/ecosystem/{remix.md → remix.mdx} +45 -26
  63. package/docs/guides/ecosystem/{sentry.md → sentry.mdx} +7 -5
  64. package/docs/guides/ecosystem/{solidstart.md → solidstart.mdx} +21 -13
  65. package/docs/guides/ecosystem/{ssr-react.md → ssr-react.mdx} +9 -11
  66. package/docs/guides/ecosystem/{stric.md → stric.mdx} +16 -17
  67. package/docs/guides/ecosystem/{sveltekit.md → sveltekit.mdx} +42 -29
  68. package/docs/guides/ecosystem/{systemd.md → systemd.mdx} +27 -26
  69. package/docs/guides/ecosystem/upstash.mdx +87 -0
  70. package/docs/guides/ecosystem/{vite.md → vite.mdx} +20 -14
  71. package/docs/guides/html-rewriter/{extract-links.md → extract-links.mdx} +11 -7
  72. package/docs/guides/html-rewriter/{extract-social-meta.md → extract-social-meta.mdx} +6 -2
  73. package/docs/guides/http/{cluster.md → cluster.mdx} +10 -7
  74. package/docs/guides/http/{fetch-unix.md → fetch-unix.mdx} +5 -3
  75. package/docs/guides/http/{fetch.md → fetch.mdx} +5 -3
  76. package/docs/guides/http/{file-uploads.md → file-uploads.mdx} +18 -15
  77. package/docs/guides/http/{hot.md → hot.mdx} +9 -7
  78. package/docs/guides/http/{proxy.md → proxy.mdx} +7 -5
  79. package/docs/guides/http/{server.md → server.mdx} +4 -2
  80. package/docs/guides/http/{simple.md → simple.mdx} +4 -2
  81. package/docs/guides/http/{stream-file.md → stream-file.mdx} +6 -4
  82. package/docs/guides/http/{stream-iterator.md → stream-iterator.mdx} +5 -3
  83. package/docs/guides/http/{stream-node-streams-in-bun.md → stream-node-streams-in-bun.mdx} +4 -2
  84. package/docs/guides/http/{tls.md → tls.mdx} +5 -3
  85. package/docs/guides/index.mdx +10 -0
  86. package/docs/guides/install/{add-dev.md → add-dev.mdx} +8 -6
  87. package/docs/guides/install/add-git.mdx +38 -0
  88. package/docs/guides/install/{add-optional.md → add-optional.mdx} +7 -5
  89. package/docs/guides/install/{add-peer.md → add-peer.mdx} +13 -11
  90. package/docs/guides/install/{add-tarball.md → add-tarball.mdx} +7 -5
  91. package/docs/guides/install/{add.md → add.mdx} +12 -10
  92. package/docs/guides/install/{azure-artifacts.md → azure-artifacts.mdx} +15 -12
  93. package/docs/guides/{runtime/cicd.md → install/cicd.mdx} +13 -13
  94. package/docs/guides/install/{custom-registry.md → custom-registry.mdx} +6 -4
  95. package/docs/guides/install/{from-npm-install-to-bun-install.md → from-npm-install-to-bun-install.mdx} +50 -34
  96. package/docs/guides/install/{git-diff-bun-lockfile.md → git-diff-bun-lockfile.mdx} +14 -11
  97. package/docs/guides/install/{jfrog-artifactory.md → jfrog-artifactory.mdx} +4 -4
  98. package/docs/guides/install/{npm-alias.md → npm-alias.mdx} +6 -4
  99. package/docs/guides/install/{registry-scope.md → registry-scope.mdx} +6 -4
  100. package/docs/guides/install/{trusted.md → trusted.mdx} +22 -18
  101. package/docs/guides/install/{workspaces.md → workspaces.mdx} +13 -13
  102. package/docs/guides/install/{yarnlock.md → yarnlock.mdx} +15 -9
  103. package/docs/guides/process/{argv.md → argv.mdx} +17 -9
  104. package/docs/guides/process/{ctrl-c.md → ctrl-c.mdx} +4 -2
  105. package/docs/guides/process/{ipc.md → ipc.mdx} +13 -10
  106. package/docs/guides/process/{nanoseconds.md → nanoseconds.mdx} +3 -1
  107. package/docs/guides/process/{os-signals.md → os-signals.mdx} +3 -1
  108. package/docs/guides/process/{spawn-stderr.md → spawn-stderr.mdx} +4 -1
  109. package/docs/guides/process/{spawn-stdout.md → spawn-stdout.mdx} +3 -1
  110. package/docs/guides/process/{spawn.md → spawn.mdx} +3 -1
  111. package/docs/guides/process/{stdin.md → stdin.mdx} +15 -7
  112. package/docs/guides/read-file/{arraybuffer.md → arraybuffer.mdx} +5 -3
  113. package/docs/guides/read-file/{buffer.md → buffer.mdx} +4 -2
  114. package/docs/guides/read-file/{exists.md → exists.mdx} +4 -2
  115. package/docs/guides/read-file/{json.md → json.mdx} +4 -2
  116. package/docs/guides/read-file/{mime.md → mime.mdx} +3 -1
  117. package/docs/guides/read-file/{stream.md → stream.mdx} +3 -1
  118. package/docs/guides/read-file/{string.md → string.mdx} +3 -1
  119. package/docs/guides/read-file/{uint8array.md → uint8array.mdx} +3 -1
  120. package/docs/guides/read-file/{watch.md → watch.mdx} +6 -8
  121. package/docs/guides/runtime/{build-time-constants.md → build-time-constants.mdx} +24 -22
  122. package/docs/guides/{install/cicd.md → runtime/cicd.mdx} +11 -7
  123. package/docs/guides/runtime/{codesign-macos-executable.md → codesign-macos-executable.mdx} +14 -9
  124. package/docs/guides/runtime/{define-constant.md → define-constant.mdx} +20 -16
  125. package/docs/guides/runtime/{delete-directory.md → delete-directory.mdx} +5 -3
  126. package/docs/guides/runtime/{delete-file.md → delete-file.mdx} +4 -2
  127. package/docs/guides/runtime/{heap-snapshot.md → heap-snapshot.mdx} +5 -3
  128. package/docs/guides/runtime/{import-html.md → import-html.mdx} +4 -2
  129. package/docs/guides/runtime/{import-json.md → import-json.mdx} +6 -4
  130. package/docs/guides/runtime/{import-toml.md → import-toml.mdx} +5 -3
  131. package/docs/guides/runtime/{import-yaml.md → import-yaml.mdx} +9 -7
  132. package/docs/guides/runtime/{read-env.md → read-env.mdx} +10 -5
  133. package/docs/guides/runtime/{set-env.md → set-env.mdx} +14 -10
  134. package/docs/guides/runtime/{shell.md → shell.mdx} +6 -4
  135. package/docs/guides/runtime/{timezone.md → timezone.mdx} +10 -7
  136. package/docs/guides/runtime/{tsconfig-paths.md → tsconfig-paths.mdx} +5 -3
  137. package/docs/guides/runtime/{typescript.md → typescript.mdx} +8 -6
  138. package/docs/guides/runtime/{vscode-debugger.md → vscode-debugger.mdx} +12 -11
  139. package/docs/guides/runtime/{web-debugger.md → web-debugger.mdx} +39 -18
  140. package/docs/guides/streams/{node-readable-to-arraybuffer.md → node-readable-to-arraybuffer.mdx} +3 -1
  141. package/docs/guides/streams/{node-readable-to-blob.md → node-readable-to-blob.mdx} +3 -1
  142. package/docs/guides/streams/{node-readable-to-json.md → node-readable-to-json.mdx} +3 -1
  143. package/docs/guides/streams/{node-readable-to-string.md → node-readable-to-string.mdx} +3 -1
  144. package/docs/guides/streams/{node-readable-to-uint8array.md → node-readable-to-uint8array.mdx} +3 -1
  145. package/docs/guides/streams/{to-array.md → to-array.mdx} +3 -1
  146. package/docs/guides/streams/{to-arraybuffer.md → to-arraybuffer.mdx} +3 -1
  147. package/docs/guides/streams/{to-blob.md → to-blob.mdx} +3 -1
  148. package/docs/guides/streams/{to-buffer.md → to-buffer.mdx} +3 -1
  149. package/docs/guides/streams/{to-json.md → to-json.mdx} +4 -2
  150. package/docs/guides/streams/{to-string.md → to-string.mdx} +3 -1
  151. package/docs/guides/streams/{to-typedarray.md → to-typedarray.mdx} +3 -1
  152. package/docs/guides/test/{bail.md → bail.mdx} +7 -5
  153. package/docs/guides/test/{coverage-threshold.md → coverage-threshold.mdx} +14 -7
  154. package/docs/guides/test/{coverage.md → coverage.mdx} +9 -4
  155. package/docs/guides/test/{happy-dom.md → happy-dom.mdx} +13 -8
  156. package/docs/guides/test/{migrate-from-jest.md → migrate-from-jest.mdx} +19 -37
  157. package/docs/guides/test/{mock-clock.md → mock-clock.mdx} +3 -1
  158. package/docs/guides/test/{mock-functions.md → mock-functions.mdx} +7 -5
  159. package/docs/guides/test/{rerun-each.md → rerun-each.mdx} +5 -3
  160. package/docs/guides/test/{run-tests.md → run-tests.mdx} +16 -11
  161. package/docs/guides/test/{skip-tests.md → skip-tests.mdx} +8 -4
  162. package/docs/guides/test/{snapshot.md → snapshot.mdx} +20 -13
  163. package/docs/guides/test/spy-on.mdx +49 -0
  164. package/docs/guides/test/{svelte-test.md → svelte-test.mdx} +16 -23
  165. package/docs/guides/test/{testing-library.md → testing-library.mdx} +18 -17
  166. package/docs/guides/test/{timeout.md → timeout.mdx} +5 -3
  167. package/docs/guides/test/{todo-tests.md → todo-tests.mdx} +13 -6
  168. package/docs/guides/test/{update-snapshots.md → update-snapshots.mdx} +9 -6
  169. package/docs/guides/test/{watch-mode.md → watch-mode.mdx} +9 -4
  170. package/docs/guides/util/{base64.md → base64.mdx} +3 -1
  171. package/docs/guides/util/{deep-equals.md → deep-equals.mdx} +5 -3
  172. package/docs/guides/util/{deflate.md → deflate.mdx} +3 -1
  173. package/docs/guides/util/{detect-bun.md → detect-bun.mdx} +3 -1
  174. package/docs/guides/util/{entrypoint.md → entrypoint.mdx} +4 -2
  175. package/docs/guides/util/{escape-html.md → escape-html.mdx} +3 -1
  176. package/docs/guides/util/{file-url-to-path.md → file-url-to-path.mdx} +3 -1
  177. package/docs/guides/util/{gzip.md → gzip.mdx} +3 -1
  178. package/docs/guides/util/{hash-a-password.md → hash-a-password.mdx} +3 -1
  179. package/docs/guides/util/{import-meta-dir.md → import-meta-dir.mdx} +4 -2
  180. package/docs/guides/util/{import-meta-file.md → import-meta-file.mdx} +4 -2
  181. package/docs/guides/util/{import-meta-path.md → import-meta-path.mdx} +4 -2
  182. package/docs/guides/util/{javascript-uuid.md → javascript-uuid.mdx} +3 -1
  183. package/docs/guides/util/{main.md → main.mdx} +19 -8
  184. package/docs/guides/util/{path-to-file-url.md → path-to-file-url.mdx} +3 -1
  185. package/docs/guides/util/{sleep.md → sleep.mdx} +3 -1
  186. package/docs/guides/util/{version.md → version.mdx} +6 -4
  187. package/docs/guides/util/{which-path-to-executable-bin.md → which-path-to-executable-bin.mdx} +4 -2
  188. package/docs/guides/websocket/{compression.md → compression.mdx} +5 -3
  189. package/docs/guides/websocket/{context.md → context.mdx} +9 -12
  190. package/docs/guides/websocket/{pubsub.md → pubsub.mdx} +5 -6
  191. package/docs/guides/websocket/{simple.md → simple.mdx} +5 -3
  192. package/docs/guides/write-file/{append.md → append.mdx} +3 -1
  193. package/docs/guides/write-file/{basic.md → basic.mdx} +3 -1
  194. package/docs/guides/write-file/{blob.md → blob.mdx} +3 -1
  195. package/docs/guides/write-file/{cat.md → cat.mdx} +4 -2
  196. package/docs/guides/write-file/{file-cp.md → file-cp.mdx} +3 -1
  197. package/docs/guides/write-file/{filesink.md → filesink.mdx} +3 -1
  198. package/docs/guides/write-file/{response.md → response.mdx} +3 -1
  199. package/docs/guides/write-file/{stdout.md → stdout.mdx} +3 -1
  200. package/docs/guides/write-file/{stream.md → stream.mdx} +3 -1
  201. package/docs/guides/write-file/{unlink.md → unlink.mdx} +3 -1
  202. package/docs/{index.md → index.mdx} +97 -41
  203. package/docs/installation.mdx +365 -0
  204. package/docs/{cli/bunx.md → pm/bunx.mdx} +25 -31
  205. package/docs/{install/catalogs.md → pm/catalogs.mdx} +18 -24
  206. package/docs/{cli/add.md → pm/cli/add.mdx} +61 -55
  207. package/docs/{install/audit.md → pm/cli/audit.mdx} +11 -8
  208. package/docs/{cli/install.md → pm/cli/install.mdx} +208 -81
  209. package/docs/{cli/link.md → pm/cli/link.mdx} +27 -19
  210. package/docs/{cli/outdated.md → pm/cli/outdated.mdx} +119 -12
  211. package/docs/{install/patch.md → pm/cli/patch.mdx} +25 -15
  212. package/docs/{cli/pm.md → pm/cli/pm.mdx} +96 -62
  213. package/docs/{cli/publish.md → pm/cli/publish.mdx} +38 -35
  214. package/docs/pm/cli/remove.mdx +16 -0
  215. package/docs/{cli/update.md → pm/cli/update.mdx} +26 -15
  216. package/docs/{cli/why.md → pm/cli/why.mdx} +27 -10
  217. package/docs/{cli/filter.md → pm/filter.mdx} +26 -14
  218. package/docs/{install/cache.md → pm/global-cache.mdx} +25 -12
  219. package/docs/{install/isolated.md → pm/isolated-installs.mdx} +32 -24
  220. package/docs/{install/lifecycle.md → pm/lifecycle.mdx} +20 -9
  221. package/docs/{install/lockfile.md → pm/lockfile.mdx} +18 -12
  222. package/docs/{install/npmrc.md → pm/npmrc.mdx} +30 -24
  223. package/docs/{install/overrides.md → pm/overrides.mdx} +47 -37
  224. package/docs/{install/registries.md → pm/scopes-registries.mdx} +8 -3
  225. package/docs/{install/security-scanner-api.md → pm/security-scanner-api.mdx} +22 -8
  226. package/docs/{install/workspaces.md → pm/workspaces.mdx} +17 -22
  227. package/docs/project/{benchmarking.md → benchmarking.mdx} +26 -11
  228. package/docs/project/{bindgen.md → bindgen.mdx} +12 -14
  229. package/docs/project/{building-windows.md → building-windows.mdx} +18 -47
  230. package/docs/project/{contributing.md → contributing.mdx} +56 -60
  231. package/docs/project/feedback.mdx +20 -0
  232. package/docs/project/license.mdx +78 -0
  233. package/docs/project/roadmap.mdx +8 -0
  234. package/docs/quickstart.mdx +240 -0
  235. package/docs/runtime/{autoimport.md → auto-install.mdx} +34 -31
  236. package/docs/{api/binary-data.md → runtime/binary-data.mdx} +77 -269
  237. package/docs/runtime/bun-apis.mdx +59 -0
  238. package/docs/runtime/{bunfig.md → bunfig.mdx} +95 -225
  239. package/docs/{api/cc.md → runtime/c-compiler.mdx} +16 -9
  240. package/docs/{api/spawn.md → runtime/child-process.mdx} +69 -119
  241. package/docs/{api/color.md → runtime/color.mdx} +6 -1
  242. package/docs/{api/console.md → runtime/console.mdx} +17 -7
  243. package/docs/{api/cookie.md → runtime/cookies.mdx} +24 -19
  244. package/docs/runtime/{debugger.md → debugger.mdx} +61 -51
  245. package/docs/runtime/environment-variables.mdx +214 -0
  246. package/docs/{api/ffi.md → runtime/ffi.mdx} +53 -45
  247. package/docs/{api/file-io.md → runtime/file-io.mdx} +41 -101
  248. package/docs/{api/file-system-router.md → runtime/file-system-router.mdx} +8 -2
  249. package/docs/{bundler/loaders.md → runtime/file-types.mdx} +56 -112
  250. package/docs/{api/glob.md → runtime/glob.mdx} +4 -1
  251. package/docs/runtime/globals.mdx +72 -0
  252. package/docs/{api/hashing.md → runtime/hashing.mdx} +18 -22
  253. package/docs/{api/html-rewriter.md → runtime/html-rewriter.mdx} +36 -30
  254. package/docs/runtime/http/cookies.mdx +79 -0
  255. package/docs/runtime/http/error-handling.mdx +40 -0
  256. package/docs/runtime/http/metrics.mdx +36 -0
  257. package/docs/runtime/http/routing.mdx +289 -0
  258. package/docs/runtime/http/server.mdx +647 -0
  259. package/docs/runtime/http/tls.mdx +101 -0
  260. package/docs/{api/websockets.md → runtime/http/websockets.mdx} +62 -231
  261. package/docs/{cli/run.md → runtime/index.mdx} +70 -108
  262. package/docs/runtime/jsx.mdx +115 -0
  263. package/docs/runtime/{modules.md → module-resolution.mdx} +83 -61
  264. package/docs/{api/dns.md → runtime/networking/dns.mdx} +23 -22
  265. package/docs/{api/fetch.md → runtime/networking/fetch.mdx} +10 -5
  266. package/docs/{api/tcp.md → runtime/networking/tcp.mdx} +59 -41
  267. package/docs/{api/udp.md → runtime/networking/udp.mdx} +14 -8
  268. package/docs/{api/node-api.md → runtime/node-api.mdx} +5 -0
  269. package/docs/runtime/{nodejs-apis.md → nodejs-compat.mdx} +9 -4
  270. package/docs/{bundler/plugins.md → runtime/plugins.mdx} +17 -61
  271. package/docs/{api/redis.md → runtime/redis.mdx} +65 -80
  272. package/docs/{api/s3.md → runtime/s3.mdx} +79 -66
  273. package/docs/{api/secrets.md → runtime/secrets.mdx} +27 -10
  274. package/docs/{api/semver.md → runtime/semver.mdx} +9 -4
  275. package/docs/runtime/{shell.md → shell.mdx} +52 -20
  276. package/docs/{api/sql.md → runtime/sql.mdx} +129 -99
  277. package/docs/{api/sqlite.md → runtime/sqlite.mdx} +162 -157
  278. package/docs/{api/streams.md → runtime/streams.mdx} +33 -31
  279. package/docs/{cli/bun-create.md → runtime/templating/create.mdx} +74 -143
  280. package/docs/{cli/init.md → runtime/templating/init.mdx} +24 -51
  281. package/docs/{api/transpiler.md → runtime/transpiler.mdx} +50 -38
  282. package/docs/{typescript.md → runtime/typescript.mdx} +7 -2
  283. package/docs/{api/utils.md → runtime/utils.mdx} +81 -50
  284. package/docs/runtime/{hot.md → watch-mode.mdx} +53 -37
  285. package/docs/runtime/web-apis.mdx +29 -0
  286. package/docs/{api/workers.md → runtime/workers.mdx} +28 -22
  287. package/docs/{api/yaml.md → runtime/yaml.mdx} +33 -232
  288. package/docs/snippets/cli/add.mdx +166 -0
  289. package/docs/snippets/cli/build.mdx +196 -0
  290. package/docs/snippets/cli/feedback.mdx +17 -0
  291. package/docs/snippets/cli/init.mdx +84 -0
  292. package/docs/snippets/cli/install.mdx +173 -0
  293. package/docs/snippets/cli/link.mdx +163 -0
  294. package/docs/snippets/cli/outdated.mdx +140 -0
  295. package/docs/snippets/cli/patch.mdx +171 -0
  296. package/docs/snippets/cli/publish.mdx +198 -0
  297. package/docs/snippets/cli/remove.mdx +146 -0
  298. package/docs/snippets/cli/run.mdx +293 -0
  299. package/docs/snippets/cli/test.mdx +100 -0
  300. package/docs/snippets/cli/update.mdx +144 -0
  301. package/docs/snippets/product-card.mdx +32 -0
  302. package/docs/snippets/product-tiles.mdx +94 -0
  303. package/docs/test/code-coverage.mdx +409 -0
  304. package/docs/test/configuration.mdx +467 -0
  305. package/docs/test/{time.md → dates-times.mdx} +23 -20
  306. package/docs/test/{discovery.md → discovery.mdx} +15 -10
  307. package/docs/test/dom.mdx +226 -0
  308. package/docs/{cli/test.md → test/index.mdx} +77 -94
  309. package/docs/test/lifecycle.mdx +348 -0
  310. package/docs/test/mocks.mdx +637 -0
  311. package/docs/test/{reporters.md → reporters.mdx} +15 -15
  312. package/docs/test/runtime-behavior.mdx +342 -0
  313. package/docs/test/snapshots.mdx +434 -0
  314. package/docs/test/writing-tests.mdx +635 -0
  315. package/docs/typescript.mdx +54 -0
  316. package/package.json +8 -6
  317. package/test.d.ts +2 -2
  318. package/docs/api/file.md +0 -19
  319. package/docs/api/globals.md +0 -387
  320. package/docs/api/http.md +0 -1408
  321. package/docs/api/import-meta.md +0 -69
  322. package/docs/benchmarks.md +0 -120
  323. package/docs/bun-flavored-toml.md +0 -42
  324. package/docs/bundler/css_modules.md +0 -145
  325. package/docs/bundler/fullstack.md +0 -418
  326. package/docs/bundler/index.md +0 -1735
  327. package/docs/bundler/intro.md +0 -75
  328. package/docs/bundler/vs-esbuild.md +0 -1127
  329. package/docs/cli/bun-completions.md +0 -3
  330. package/docs/cli/bun-install.md +0 -349
  331. package/docs/cli/bun-upgrade.md +0 -39
  332. package/docs/cli/info.md +0 -65
  333. package/docs/cli/patch-commit.md +0 -11
  334. package/docs/cli/remove.md +0 -7
  335. package/docs/cli/unlink.md +0 -9
  336. package/docs/contributing/upgrading-webkit.md +0 -57
  337. package/docs/ecosystem/elysia.md +0 -24
  338. package/docs/ecosystem/express.md +0 -37
  339. package/docs/ecosystem/hono.md +0 -18
  340. package/docs/ecosystem/react.md +0 -65
  341. package/docs/ecosystem/stric.md +0 -38
  342. package/docs/guides/ecosystem/prisma.md +0 -141
  343. package/docs/guides/ecosystem/render.md +0 -79
  344. package/docs/guides/install/add-git.md +0 -36
  345. package/docs/guides/test/spy-on.md +0 -46
  346. package/docs/install/index.md +0 -248
  347. package/docs/installation.md +0 -327
  348. package/docs/project/asan.md +0 -124
  349. package/docs/project/internals/build-process-for-ci.md +0 -75
  350. package/docs/project/licensing.md +0 -73
  351. package/docs/project/roadmap.md +0 -87
  352. package/docs/quickstart.md +0 -157
  353. package/docs/runtime/bun-apis.md +0 -207
  354. package/docs/runtime/env.md +0 -253
  355. package/docs/runtime/index.md +0 -312
  356. package/docs/runtime/jsx.md +0 -385
  357. package/docs/runtime/loaders.md +0 -130
  358. package/docs/runtime/plugins.md +0 -561
  359. package/docs/runtime/typescript.md +0 -139
  360. package/docs/runtime/web-apis.md +0 -128
  361. package/docs/test/configuration.md +0 -154
  362. package/docs/test/coverage.md +0 -142
  363. package/docs/test/dom.md +0 -75
  364. package/docs/test/examples/concurrent-test-glob.md +0 -132
  365. package/docs/test/hot.md +0 -15
  366. package/docs/test/lifecycle.md +0 -81
  367. package/docs/test/mocks.md +0 -313
  368. package/docs/test/runtime-behavior.md +0 -95
  369. package/docs/test/snapshots.md +0 -68
  370. package/docs/test/writing.md +0 -825
@@ -1,13 +1,19 @@
1
- Use `bun publish` to publish a package to the npm registry.
1
+ ---
2
+ title: "bun publish"
3
+ description: Use `bun publish` to publish a package to the npm registry
4
+ ---
5
+
6
+ import Publish from "/snippets/cli/publish.mdx";
2
7
 
3
8
  `bun publish` will automatically pack your package into a tarball, strip catalog and workspace protocols from the `package.json` (resolving versions if necessary), and publish to the registry specified in your configuration files. Both `bunfig.toml` and `.npmrc` files are supported.
4
9
 
5
- ```sh
10
+ ```sh terminal icon="terminal"
6
11
  ## Publishing the package from the current working directory
7
- $ bun publish
12
+ bun publish
13
+ ```
8
14
 
9
- ## Output
10
- bun publish v1.3.2-canary.20251105T140650 (ca7428e9)
15
+ ```txt
16
+ bun publish v1.3.1 (ca7428e9)
11
17
 
12
18
  packed 203B package.json
13
19
  packed 224B README.md
@@ -28,27 +34,28 @@ Registry: http://localhost:4873/
28
34
 
29
35
  Alternatively, you can pack and publish your package separately by using `bun pm pack` followed by `bun publish` with the path to the output tarball.
30
36
 
31
- ```sh
32
- $ bun pm pack
37
+ ```sh terminal icon="terminal"
38
+ bun pm pack
33
39
  ...
34
- $ bun publish ./package.tgz
40
+ bun publish ./package.tgz
35
41
  ```
36
42
 
37
- {% callout %}
38
- **Note** - `bun publish` will not run lifecycle scripts (`prepublishOnly/prepack/prepare/postpack/publish/postpublish`) if a tarball path is provided. Scripts will only be run if the package is packed by `bun publish`.
39
- {% /callout %}
43
+ <Note>
44
+ `bun publish` will not run lifecycle scripts (`prepublishOnly/prepack/prepare/postpack/publish/postpublish`) if a
45
+ tarball path is provided. Scripts will only be run if the package is packed by `bun publish`.
46
+ </Note>
40
47
 
41
48
  ### `--access`
42
49
 
43
50
  The `--access` flag can be used to set the access level of the package being published. The access level can be one of `public` or `restricted`. Unscoped packages are always public, and attempting to publish an unscoped package with `--access restricted` will result in an error.
44
51
 
45
- ```sh
46
- $ bun publish --access public
52
+ ```sh terminal icon="terminal"
53
+ bun publish --access public
47
54
  ```
48
55
 
49
56
  `--access` can also be set in the `publishConfig` field of your `package.json`.
50
57
 
51
- ```json
58
+ ```json package.json icon="file-json"
52
59
  {
53
60
  "publishConfig": {
54
61
  "access": "restricted"
@@ -60,13 +67,13 @@ $ bun publish --access public
60
67
 
61
68
  Set the tag of the package version being published. By default, the tag is `latest`. The initial version of a package is always given the `latest` tag in addition to the specified tag.
62
69
 
63
- ```sh
64
- $ bun publish --tag alpha
70
+ ```sh terminal icon="terminal"
71
+ bun publish --tag alpha
65
72
  ```
66
73
 
67
74
  `--tag` can also be set in the `publishConfig` field of your `package.json`.
68
75
 
69
- ```json
76
+ ```json package.json icon="file-json"
70
77
  {
71
78
  "publishConfig": {
72
79
  "tag": "next"
@@ -78,29 +85,20 @@ $ bun publish --tag alpha
78
85
 
79
86
  The `--dry-run` flag can be used to simulate the publish process without actually publishing the package. This is useful for verifying the contents of the published package without actually publishing the package.
80
87
 
81
- ```sh
82
- $ bun publish --dry-run
83
- ```
84
-
85
- ### `--tolerate-republish`
86
-
87
- Exit with code 0 instead of 1 if the package version already exists. Useful in CI/CD where jobs may be re-run.
88
-
89
- ```sh
90
- $ bun publish --tolerate-republish
88
+ ```sh terminal icon="terminal"
89
+ bun publish --dry-run
91
90
  ```
92
91
 
93
92
  ### `--gzip-level`
94
93
 
95
94
  Specify the level of gzip compression to use when packing the package. Only applies to `bun publish` without a tarball path argument. Values range from `0` to `9` (default is `9`).
96
- {% bunCLIUsage command="publish" /%}
97
95
 
98
96
  ### `--auth-type`
99
97
 
100
98
  If you have 2FA enabled for your npm account, `bun publish` will prompt you for a one-time password. This can be done through a browser or the CLI. The `--auth-type` flag can be used to tell the npm registry which method you prefer. The possible values are `web` and `legacy`, with `web` being the default.
101
99
 
102
- ```sh
103
- $ bun publish --auth-type legacy
100
+ ```sh terminal icon="terminal"
101
+ bun publish --auth-type legacy
104
102
  ...
105
103
  This operation requires a one-time password.
106
104
  Enter OTP: 123456
@@ -111,10 +109,15 @@ Enter OTP: 123456
111
109
 
112
110
  Provide a one-time password directly to the CLI. If the password is valid, this will skip the extra prompt for a one-time password before publishing. Example usage:
113
111
 
114
- ```sh
115
- $ bun publish --otp 123456
112
+ ```sh terminal icon="terminal"
113
+ bun publish --otp 123456
116
114
  ```
117
115
 
118
- {% callout %}
119
- **Note** - `bun publish` respects the `NPM_CONFIG_TOKEN` environment variable which can be used when publishing in github actions or automated workflows.
120
- {% /callout %}
116
+ <Note>
117
+ `bun publish` respects the `NPM_CONFIG_TOKEN` environment variable which can be used when publishing in github actions
118
+ or automated workflows.
119
+ </Note>
120
+
121
+ ---
122
+
123
+ <Publish />
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: "bun remove"
3
+ description: "Remove dependencies from your project"
4
+ ---
5
+
6
+ import Remove from "/snippets/cli/remove.mdx";
7
+
8
+ ## Basic Usage
9
+
10
+ ```bash terminal icon="terminal"
11
+ bun remove ts-node
12
+ ```
13
+
14
+ ---
15
+
16
+ <Remove />
@@ -1,22 +1,31 @@
1
+ ---
2
+ title: "bun update"
3
+ description: "Update dependencies to latest versions"
4
+ ---
5
+
6
+ import Update from "/snippets/cli/update.mdx";
7
+
8
+ <Note>To upgrade your Bun CLI version, see [`bun upgrade`](/installation#upgrading).</Note>
9
+
1
10
  To update all dependencies to the latest version:
2
11
 
3
- ```sh
4
- $ bun update
12
+ ```sh terminal icon="terminal"
13
+ bun update
5
14
  ```
6
15
 
7
16
  To update a specific dependency to the latest version:
8
17
 
9
- ```sh
10
- $ bun update [package]
18
+ ```sh terminal icon="terminal"
19
+ bun update [package]
11
20
  ```
12
21
 
13
22
  ## `--interactive`
14
23
 
15
24
  For a more controlled update experience, use the `--interactive` flag to select which packages to update:
16
25
 
17
- ```sh
18
- $ bun update --interactive
19
- $ bun update -i
26
+ ```sh terminal icon="terminal"
27
+ bun update --interactive
28
+ bun update -i
20
29
  ```
21
30
 
22
31
  This launches an interactive terminal interface that shows all outdated packages with their current and target versions. You can then select which packages to update.
@@ -25,7 +34,7 @@ This launches an interactive terminal interface that shows all outdated packages
25
34
 
26
35
  The interface displays packages grouped by dependency type:
27
36
 
28
- ```
37
+ ```txt
29
38
  ? Select packages to update - Space to toggle, Enter to confirm, a to select all, n to select none, i to invert, l to toggle latest
30
39
 
31
40
  dependencies Current Target Latest
@@ -94,9 +103,9 @@ Within each section, individual packages may have additional suffixes (` dev`, `
94
103
 
95
104
  Use the `--recursive` flag with `--interactive` to update dependencies across all workspaces in a monorepo:
96
105
 
97
- ```sh
98
- $ bun update --interactive --recursive
99
- $ bun update -i -r
106
+ ```sh terminal icon="terminal"
107
+ bun update --interactive --recursive
108
+ bun update -i -r
100
109
  ```
101
110
 
102
111
  This displays an additional "Workspace" column showing which workspace each dependency belongs to.
@@ -107,15 +116,15 @@ By default, `bun update` will update to the latest version of a dependency that
107
116
 
108
117
  To update to the latest version, regardless of if it's compatible with the current version range, use the `--latest` flag:
109
118
 
110
- ```sh
111
- $ bun update --latest
119
+ ```sh terminal icon="terminal"
120
+ bun update --latest
112
121
  ```
113
122
 
114
123
  In interactive mode, you can toggle individual packages between their target version (respecting semver) and latest version using the **l** key.
115
124
 
116
125
  For example, with the following `package.json`:
117
126
 
118
- ```json
127
+ ```json package.json icon="file-json"
119
128
  {
120
129
  "dependencies": {
121
130
  "react": "^17.0.2"
@@ -126,4 +135,6 @@ For example, with the following `package.json`:
126
135
  - `bun update` would update to a version that matches `17.x`.
127
136
  - `bun update --latest` would update to a version that matches `18.x` or later.
128
137
 
129
- {% bunCLIUsage command="update" /%}
138
+ ---
139
+
140
+ <Update />
@@ -1,9 +1,14 @@
1
+ ---
2
+ title: "bun why"
3
+ description: "Explain why a package is installed"
4
+ ---
5
+
1
6
  The `bun why` command explains why a package is installed in your project by showing the dependency chain that led to its installation.
2
7
 
3
8
  ## Usage
4
9
 
5
- ```bash
6
- $ bun why <package>
10
+ ```bash terminal icon="terminal"
11
+ bun why <package>
7
12
  ```
8
13
 
9
14
  ## Arguments
@@ -19,16 +24,22 @@ $ bun why <package>
19
24
 
20
25
  Check why a specific package is installed:
21
26
 
22
- ```bash
23
- $ bun why react
27
+ ```bash terminal icon="terminal"
28
+ bun why react
29
+ ```
30
+
31
+ ```txt
24
32
  react@18.2.0
25
33
  └─ my-app@1.0.0 (requires ^18.0.0)
26
34
  ```
27
35
 
28
36
  Check why all packages with a specific pattern are installed:
29
37
 
30
- ```bash
31
- $ bun why "@types/*"
38
+ ```bash terminal icon="terminal"
39
+ bun why "@types/*"
40
+ ```
41
+
42
+ ```txt
32
43
  @types/react@18.2.15
33
44
  └─ dev my-app@1.0.0 (requires ^18.0.0)
34
45
 
@@ -38,16 +49,22 @@ $ bun why "@types/*"
38
49
 
39
50
  Show only top-level dependencies:
40
51
 
41
- ```bash
42
- $ bun why express --top
52
+ ```bash terminal icon="terminal"
53
+ bun why express --top
54
+ ```
55
+
56
+ ```txt
43
57
  express@4.18.2
44
58
  └─ my-app@1.0.0 (requires ^4.18.2)
45
59
  ```
46
60
 
47
61
  Limit the dependency tree depth:
48
62
 
49
- ```bash
50
- $ bun why express --depth 2
63
+ ```bash terminal icon="terminal"
64
+ bun why express --depth 2
65
+ ```
66
+
67
+ ```txt
51
68
  express@4.18.2
52
69
  └─ express-pollyfill@1.20.1 (requires ^4.18.2)
53
70
  └─ body-parser@1.20.1 (requires ^1.20.1)
@@ -1,7 +1,14 @@
1
+ ---
2
+ title: "bun --filter"
3
+ description: "Select packages by pattern in a monorepo using the --filter flag"
4
+ ---
5
+
1
6
  The `--filter` (or `-F`) flag is used for selecting packages by pattern in a monorepo. Patterns can be used to match package names or package paths, with full glob syntax support.
2
7
 
3
8
  Currently `--filter` is supported by `bun install` and `bun outdated`, and can also be used to run scripts for multiple packages at once.
4
9
 
10
+ ---
11
+
5
12
  ## Matching
6
13
 
7
14
  ### Package Name `--filter <pattern>`
@@ -12,6 +19,8 @@ Name patterns select packages based on the package name, as specified in `packag
12
19
 
13
20
  Path patterns are specified by starting the pattern with `./`, and will select all packages in directories that match the pattern. For example, to match all packages in subdirectories of `packages`, you can use `--filter './packages/**'`. To match a package located in `packages/foo`, use `--filter ./packages/foo`.
14
21
 
22
+ ---
23
+
15
24
  ## `bun install` and `bun outdated`
16
25
 
17
26
  Both `bun install` and `bun outdated` support the `--filter` flag.
@@ -20,40 +29,42 @@ Both `bun install` and `bun outdated` support the `--filter` flag.
20
29
 
21
30
  Given a monorepo with workspaces `pkg-a`, `pkg-b`, and `pkg-c` under `./packages`:
22
31
 
23
- ```bash
32
+ ```bash terminal icon="terminal"
24
33
  # Install dependencies for all workspaces except `pkg-c`
25
- $ bun install --filter '!pkg-c'
34
+ bun install --filter '!pkg-c'
26
35
 
27
36
  # Install dependencies for packages in `./packages` (`pkg-a`, `pkg-b`, `pkg-c`)
28
- $ bun install --filter './packages/*'
37
+ bun install --filter './packages/*'
29
38
 
30
39
  # Save as above, but exclude the root package.json
31
- $ bun install --filter '!./' --filter './packages/*'
40
+ bun install --filter '!./' --filter './packages/*'
32
41
  ```
33
42
 
34
43
  Similarly, `bun outdated` will display outdated dependencies for all packages in the monorepo, and `--filter` can be used to restrict the command to a subset of the packages:
35
44
 
36
- ```bash
45
+ ```bash terminal icon="terminal"
37
46
  # Display outdated dependencies for workspaces starting with `pkg-`
38
- $ bun outdated --filter 'pkg-*'
47
+ bun outdated --filter 'pkg-*'
39
48
 
40
49
  # Display outdated dependencies for only the root package.json
41
- $ bun outdated --filter './'
50
+ bun outdated --filter './'
42
51
  ```
43
52
 
44
- For more information on both these commands, see [`bun install`](https://bun.com/docs/cli/install) and [`bun outdated`](https://bun.com/docs/cli/outdated).
53
+ For more information on both these commands, see [`bun install`](/pm/cli/install) and [`bun outdated`](/pm/cli/outdated).
54
+
55
+ ---
45
56
 
46
57
  ## Running scripts with `--filter`
47
58
 
48
59
  Use the `--filter` flag to execute scripts in multiple packages at once:
49
60
 
50
- ```bash
61
+ ```bash terminal icon="terminal"
51
62
  bun --filter <pattern> <script>
52
63
  ```
53
64
 
54
65
  Say you have a monorepo with two packages: `packages/api` and `packages/frontend`, both with a `dev` script that will start a local development server. Normally, you would have to open two separate terminal tabs, cd into each package directory, and run `bun dev`:
55
66
 
56
- ```bash
67
+ ```bash terminal icon="terminal"
57
68
  cd packages/api
58
69
  bun dev
59
70
 
@@ -64,19 +75,20 @@ bun dev
64
75
 
65
76
  Using `--filter`, you can run the `dev` script in both packages at once:
66
77
 
67
- ```bash
78
+ ```bash terminal icon="terminal"
68
79
  bun --filter '*' dev
69
80
  ```
70
81
 
71
82
  Both commands will be run in parallel, and you will see a nice terminal UI showing their respective outputs:
72
- ![Terminal Output](https://github.com/oven-sh/bun/assets/48869301/2a103e42-9921-4c33-948f-a1ad6e6bac71)
83
+
84
+ <Frame>![Terminal Output](https://github.com/oven-sh/bun/assets/48869301/2a103e42-9921-4c33-948f-a1ad6e6bac71)</Frame>
73
85
 
74
86
  ### Running scripts in workspaces
75
87
 
76
- Filters respect your [workspace configuration](https://bun.com/docs/install/workspaces): If you have a `package.json` file that specifies which packages are part of the workspace,
88
+ Filters respect your [workspace configuration](/pm/workspaces): If you have a `package.json` file that specifies which packages are part of the workspace,
77
89
  `--filter` will be restricted to only these packages. Also, in a workspace you can use `--filter` to run scripts in packages that are located anywhere in the workspace:
78
90
 
79
- ```bash
91
+ ```bash terminal icon="terminal"
80
92
  # Packages
81
93
  # src/foo
82
94
  # src/bar
@@ -1,8 +1,13 @@
1
+ ---
2
+ title: "Global cache"
3
+ description: "How Bun stores and manages packages in its global cache"
4
+ ---
5
+
1
6
  All packages downloaded from the registry are stored in a global cache at `~/.bun/install/cache`, or the path defined by the environment variable `BUN_INSTALL_CACHE_DIR`. They are stored in subdirectories named like `${name}@${version}`, so multiple versions of a package can be cached.
2
7
 
3
- {% details summary="Configuring cache behavior (bunfig.toml)" %}
8
+ <Accordion title="Configuring cache behavior">
4
9
 
5
- ```toml
10
+ ```toml bunfig.toml icon="settings"
6
11
  [install.cache]
7
12
  # the directory to use for the cache
8
13
  dir = "~/.bun/install/cache"
@@ -15,31 +20,38 @@ disable = false
15
20
  disableManifest = false
16
21
  ```
17
22
 
18
- {% /details %}
23
+ </Accordion>
24
+
25
+ ---
19
26
 
20
27
  ## Minimizing re-downloads
21
28
 
22
29
  Bun strives to avoid re-downloading packages multiple times. When installing a package, if the cache already contains a version in the range specified by `package.json`, Bun will use the cached package instead of downloading it again.
23
30
 
24
- {% details summary="Installation details" %}
31
+ <Accordion title="Installation details">
25
32
  If the semver version has pre-release suffix (`1.0.0-beta.0`) or a build suffix (`1.0.0+20220101`), it is replaced with a hash of that value instead, to reduce the chances of errors associated with long file paths.
26
33
 
27
34
  When the `node_modules` folder exists, before installing, Bun checks that `node_modules` contains all expected packages with appropriate versions. If so `bun install` completes. Bun uses a custom JSON parser which stops parsing as soon as it finds `"name"` and `"version"`.
28
35
 
29
36
  If a package is missing or has a version incompatible with the `package.json`, Bun checks for a compatible module in the cache. If found, it is installed into `node_modules`. Otherwise, the package will be downloaded from the registry then installed.
30
- {% /details %}
37
+
38
+ </Accordion>
39
+
40
+ ---
31
41
 
32
42
  ## Fast copying
33
43
 
34
44
  Once a package is downloaded into the cache, Bun still needs to copy those files into `node_modules`. Bun uses the fastest syscalls available to perform this task. On Linux, it uses hardlinks; on macOS, it uses `clonefile`.
35
45
 
46
+ ---
47
+
36
48
  ## Saving disk space
37
49
 
38
50
  Since Bun uses hardlinks to "copy" a module into a project's `node_modules` directory on Linux and Windows, the contents of the package only exist in a single location on disk, greatly reducing the amount of disk space dedicated to `node_modules`.
39
51
 
40
52
  This benefit also applies to macOS, but there are exceptions. It uses `clonefile` which is copy-on-write, meaning it will not occupy disk space, but it will count towards drive's limit. This behavior is useful if something attempts to patch `node_modules/*`, so it's impossible to affect other installations.
41
53
 
42
- {% details summary="Installation strategies" %}
54
+ <Accordion title="Installation strategies">
43
55
  This behavior is configurable with the `--backend` flag, which is respected by all of Bun's package management commands.
44
56
 
45
57
  - **`hardlink`**: Default on Linux and Windows.
@@ -48,12 +60,13 @@ This behavior is configurable with the `--backend` flag, which is respected by a
48
60
  - **`copyfile`**: The fallback used when any of the above fail. It is the slowest option. On macOS, it uses `fcopyfile()`; on Linux it uses `copy_file_range()`.
49
61
  - **`symlink`**: Currently used only `file:` (and eventually `link:`) dependencies. To prevent infinite loops, it skips symlinking the `node_modules` folder.
50
62
 
51
- If you install with `--backend=symlink`, Node.js won't resolve node_modules of dependencies unless each dependency has its own `node_modules` folder or you pass `--preserve-symlinks` to `node` or `bun`. See [Node.js documentation on `--preserve-symlinks`](https://nodejs.org/api/cli.html#--preserve-symlinks).
63
+ If you install with `--backend=symlink`, Node.js won't resolve node_modules of dependencies unless each dependency has its own `node_modules` folder or you pass `--preserve-symlinks` to `node`. See [Node.js documentation on `--preserve-symlinks`](https://nodejs.org/api/cli.html#--preserve-symlinks).
52
64
 
53
- ```bash
54
- $ bun install --backend symlink
55
- $ node --preserve-symlinks ./foo.js
56
- $ bun --preserve-symlinks ./foo.js
65
+ ```bash terminal icon="terminal"
66
+ bun install --backend symlink
67
+ node --preserve-symlinks ./foo.js
57
68
  ```
58
69
 
59
- {% /details %}
70
+ Bun's runtime does not currently expose an equivalent of `--preserve-symlinks`.
71
+
72
+ </Accordion>
@@ -1,5 +1,12 @@
1
+ ---
2
+ title: "Isolated installs"
3
+ description: "Strict dependency isolation similar to pnpm's approach"
4
+ ---
5
+
1
6
  Bun provides an alternative package installation strategy called **isolated installs** that creates strict dependency isolation similar to pnpm's approach. This mode prevents phantom dependencies and ensures reproducible, deterministic builds.
2
7
 
8
+ This is the default installation strategy for monorepo projects.
9
+
3
10
  ## What are isolated installs?
4
11
 
5
12
  Isolated installs create a non-hoisted dependency structure where packages can only access their explicitly declared dependencies. This differs from the traditional "hoisted" installation strategy used by npm and Yarn, where dependencies are flattened into a shared `node_modules` directory.
@@ -17,29 +24,29 @@ Isolated installs create a non-hoisted dependency structure where packages can o
17
24
 
18
25
  Use the `--linker` flag to specify the installation strategy:
19
26
 
20
- ```bash
27
+ ```bash terminal icon="terminal"
21
28
  # Use isolated installs
22
- $ bun install --linker isolated
29
+ bun install --linker isolated
23
30
 
24
31
  # Use traditional hoisted installs
25
- $ bun install --linker hoisted
32
+ bun install --linker hoisted
26
33
  ```
27
34
 
28
35
  ### Configuration file
29
36
 
30
- Set the default linker strategy in your `bunfig.toml`:
37
+ Set the default linker strategy in your `bunfig.toml` or globally in `$HOME/.bunfig.toml`:
31
38
 
32
- ```toml
39
+ ```toml bunfig.toml icon="settings"
33
40
  [install]
34
41
  linker = "isolated"
35
42
  ```
36
43
 
37
44
  ### Default behavior
38
45
 
39
- - **Workspaces**: Bun uses **isolated** installs by default to prevent hoisting-related bugs
40
- - **Single projects**: Bun uses **hoisted** installs by default
46
+ - For monorepo projects, Bun uses the **isolated** installation strategy by default.
47
+ - For single-project projects, Bun uses the **hoisted** installation strategy by default.
41
48
 
42
- To override the default, use `--linker hoisted` or `--linker isolated`, or set it in your configuration file.
49
+ You can override the default behavior by explicitly specifying the `--linker` flag or setting it in your configuration file.
43
50
 
44
51
  ## How isolated installs work
45
52
 
@@ -47,7 +54,7 @@ To override the default, use `--linker hoisted` or `--linker isolated`, or set i
47
54
 
48
55
  Instead of hoisting dependencies, isolated installs create a two-tier structure:
49
56
 
50
- ```
57
+ ```bash tree layout of node_modules icon="list-tree"
51
58
  node_modules/
52
59
  ├── .bun/ # Central package store
53
60
  │ ├── package@1.0.0/ # Versioned package installations
@@ -93,7 +100,7 @@ In monorepos, workspace dependencies are handled specially:
93
100
 
94
101
  Isolated installs handle peer dependencies through sophisticated resolution:
95
102
 
96
- ```bash
103
+ ```bash tree layout of node_modules icon="list-tree"
97
104
  # Package with peer dependencies creates specialized paths
98
105
  node_modules/.bun/package@1.0.0_react@18.2.0/
99
106
  ```
@@ -112,8 +119,8 @@ Bun uses different file operation strategies for performance:
112
119
 
113
120
  Enable verbose logging to understand the installation process:
114
121
 
115
- ```bash
116
- $ bun install --linker isolated --verbose
122
+ ```bash terminal icon="terminal"
123
+ bun install --linker isolated --verbose
117
124
  ```
118
125
 
119
126
  This shows:
@@ -137,8 +144,8 @@ If you encounter issues, you can:
137
144
 
138
145
  1. **Switch to hoisted mode** for specific projects:
139
146
 
140
- ```bash
141
- $ bun install --linker hoisted
147
+ ```bash terminal icon="terminal"
148
+ bun install --linker hoisted
142
149
  ```
143
150
 
144
151
  2. **Report compatibility issues** to help improve isolated install support
@@ -153,37 +160,38 @@ If you encounter issues, you can:
153
160
 
154
161
  ### From npm/Yarn
155
162
 
156
- ```bash
163
+ ```bash terminal icon="terminal"
157
164
  # Remove existing node_modules and lockfiles
158
- $ rm -rf node_modules package-lock.json yarn.lock
165
+ rm -rf node_modules package-lock.json yarn.lock
159
166
 
160
167
  # Install with isolated linker
161
- $ bun install --linker isolated
168
+ bun install --linker isolated
162
169
  ```
163
170
 
164
171
  ### From pnpm
165
172
 
166
173
  Isolated installs are conceptually similar to pnpm, so migration should be straightforward:
167
174
 
168
- ```bash
175
+ ```bash terminal icon="terminal"
169
176
  # Remove pnpm files
170
177
  $ rm -rf node_modules pnpm-lock.yaml
171
178
 
172
179
  # Install with Bun's isolated linker
173
- $ bun install --linker isolated
180
+ bun install --linker isolated
174
181
  ```
175
182
 
176
183
  The main difference is that Bun uses symlinks in `node_modules` while pnpm uses a global store with symlinks.
177
184
 
178
185
  ## When to use isolated installs
179
186
 
180
- **Isolated installs are the default for workspaces.** You may want to explicitly enable them for single projects when:
187
+ **Use isolated installs when:**
181
188
 
189
+ - Working in monorepos with multiple packages
182
190
  - Strict dependency management is required
183
191
  - Preventing phantom dependencies is important
184
192
  - Building libraries that need deterministic dependencies
185
193
 
186
- **Switch to hoisted installs (including for workspaces) when:**
194
+ **Use hoisted installs when:**
187
195
 
188
196
  - Working with legacy code that assumes flat `node_modules`
189
197
  - Compatibility with existing build tools is required
@@ -192,6 +200,6 @@ The main difference is that Bun uses symlinks in `node_modules` while pnpm uses
192
200
 
193
201
  ## Related documentation
194
202
 
195
- - [Package manager > Workspaces](https://bun.com/docs/install/workspaces) — Monorepo workspace management
196
- - [Package manager > Lockfile](https://bun.com/docs/install/lockfile) — Understanding Bun's lockfile format
197
- - [CLI > install](https://bun.com/docs/cli/install) — Complete `bun install` command reference
203
+ - [Package manager > Workspaces](/pm/workspaces) — Monorepo workspace management
204
+ - [Package manager > Lockfile](/pm/lockfile) — Understanding Bun's lockfile format
205
+ - [CLI > install](/pm/cli/install) — Complete `bun install` command reference