bun-types 1.3.2-canary.20251106T140813 → 1.3.2-canary.20251108T140624

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,230 @@
1
+ ---
2
+ title: Migrate from npm install to bun install
3
+ sidebarTitle: Migrate from npm to bun
4
+ mode: center
5
+ ---
6
+
7
+ `bun install` is a Node.js compatible npm client designed to be an incredibly fast successor to npm.
8
+
9
+ We've put a lot of work into making sure that the migration path from `npm install` to `bun install` is as easy as running `bun install` instead of `npm install`.
10
+
11
+ - **Designed for Node.js & Bun**: `bun install` installs a Node.js compatible `node_modules` folder. You can use it in place of `npm install` for Node.js projects without any code changes and without using Bun's runtime.
12
+ - **Automatically converts `package-lock.json`** to bun's `bun.lock` lockfile format, preserving your existing resolved dependency versions without any manual work on your part. You can secretly use `bun install` in place of `npm install` at work without anyone noticing.
13
+ - **`.npmrc` compatible**: bun install reads npm registry configuration from npm's `.npmrc`, so you can use the same configuration for both npm and Bun.
14
+ - **Hardlinks**: On Windows and Linux, `bun install` uses hardlinks to conserve disk space and install times.
15
+
16
+ ```bash terminal icon="terminal"
17
+ # It only takes one command to migrate
18
+ bun i
19
+
20
+ # To add dependencies:
21
+ bun i @types/bun
22
+
23
+ # To add devDependencies:
24
+ bun i -d @types/bun
25
+
26
+ # To remove a dependency:
27
+ bun rm @types/bun
28
+ ```
29
+
30
+ ---
31
+
32
+ ## Run package.json scripts faster
33
+
34
+ Run scripts from package.json, executables from `node_modules/.bin` (sort of like `npx`), and JavaScript/TypeScript files (just like `node`) - all from a single simple command.
35
+
36
+ | NPM | Bun |
37
+ | ------------------ | ---------------- |
38
+ | `npm run <script>` | `bun <script>` |
39
+ | `npm exec <bin>` | `bun <bin>` |
40
+ | `node <file>` | `bun <file>` |
41
+ | `npx <package>` | `bunx <package>` |
42
+
43
+ When you use `bun run <executable>`, it will choose the locally-installed executable
44
+
45
+ ```sh terminal icon="terminal"
46
+ # Run a package.json script:
47
+ bun my-script
48
+ bun run my-script
49
+
50
+ # Run an executable in node_modules/.bin:
51
+ bun my-executable # such as tsc, esbuild, etc.
52
+ bun run my-executable
53
+
54
+ # Run a JavaScript/TypeScript file:
55
+ bun ./index.ts
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Workspaces? Yes.
61
+
62
+ `bun install` supports workspaces similarly to npm, with more features.
63
+
64
+ In package.json, you can set `"workspaces"` to an array of relative paths.
65
+
66
+ ```json package.json icon="file-json"
67
+ {
68
+ "name": "my-app",
69
+ "workspaces": ["packages/*", "apps/*"]
70
+ }
71
+ ```
72
+
73
+ ---
74
+
75
+ ### Filter scripts by workspace name
76
+
77
+ In Bun, the `--filter` flag accepts a glob pattern, and will run the command concurrently for all workspace packages with a `name` that matches the pattern, respecting dependency order.
78
+
79
+ ```sh terminal icon="terminal"
80
+ bun --filter 'lib-*' my-script
81
+ # instead of:
82
+ # npm run --workspace lib-foo --workspace lib-bar my-script
83
+ ```
84
+
85
+ ---
86
+
87
+ ## Update dependencies
88
+
89
+ To update a dependency, you can use `bun update <package>`. This will update the dependency to the latest version that satisfies the semver range specified in package.json.
90
+
91
+ ```sh terminal icon="terminal"
92
+ # Update a single dependency
93
+ bun update @types/bun
94
+
95
+ # Update all dependencies
96
+ bun update
97
+
98
+ # Ignore semver, update to the latest version
99
+ bun update @types/bun --latest
100
+
101
+ # Update a dependency to a specific version
102
+ bun update @types/bun@1.3.1
103
+
104
+ # Update all dependencies to the latest versions
105
+ bun update --latest
106
+ ```
107
+
108
+ ---
109
+
110
+ ### View outdated dependencies
111
+
112
+ To view outdated dependencies, run `bun outdated`. This is like `npm outdated` but with more compact output.
113
+
114
+ ```sh terminal icon="terminal"
115
+ bun outdated
116
+ ```
117
+
118
+ ```txt
119
+ ┌────────────────────────────────────────┬─────────┬────────┬────────┐
120
+ │ Package │ Current │ Update │ Latest │
121
+ ├────────────────────────────────────────┼─────────┼────────┼────────┤
122
+ │ @types/bun (dev) │ 1.1.6 │ 1.1.10 │ 1.1.10 │
123
+ ├────────────────────────────────────────┼─────────┼────────┼────────┤
124
+ │ @types/react (dev) │ 18.3.3 │ 18.3.8 │ 18.3.8 │
125
+ ├────────────────────────────────────────┼─────────┼────────┼────────┤
126
+ │ @typescript-eslint/eslint-plugin (dev) │ 7.16.1 │ 7.18.0 │ 8.6.0 │
127
+ ├────────────────────────────────────────┼─────────┼────────┼────────┤
128
+ │ @typescript-eslint/parser (dev) │ 7.16.1 │ 7.18.0 │ 8.6.0 │
129
+ ├────────────────────────────────────────┼─────────┼────────┼────────┤
130
+ │ @vscode/debugadapter (dev) │ 1.66.0 │ 1.67.0 │ 1.67.0 │
131
+ ├────────────────────────────────────────┼─────────┼────────┼────────┤
132
+ │ esbuild (dev) │ 0.21.5 │ 0.21.5 │ 0.24.0 │
133
+ ├────────────────────────────────────────┼─────────┼────────┼────────┤
134
+ │ eslint (dev) │ 9.7.0 │ 9.11.0 │ 9.11.0 │
135
+ ├────────────────────────────────────────┼─────────┼────────┼────────┤
136
+ │ mitata (dev) │ 0.1.11 │ 0.1.14 │ 1.0.2 │
137
+ ├────────────────────────────────────────┼─────────┼────────┼────────┤
138
+ │ prettier-plugin-organize-imports (dev) │ 4.0.0 │ 4.1.0 │ 4.1.0 │
139
+ ├────────────────────────────────────────┼─────────┼────────┼────────┤
140
+ │ source-map-js (dev) │ 1.2.0 │ 1.2.1 │ 1.2.1 │
141
+ ├────────────────────────────────────────┼─────────┼────────┼────────┤
142
+ │ typescript (dev) │ 5.5.3 │ 5.6.2 │ 5.6.2 │
143
+ └────────────────────────────────────────┴─────────┴────────┴────────┘
144
+ ```
145
+
146
+ ---
147
+
148
+ ## List installed packages
149
+
150
+ To list installed packages, you can use `bun pm ls`. This will list all the packages that are installed in the `node_modules` folder using Bun's lockfile as the source of truth. You can pass the `-a` flag to list all installed packages, including transitive dependencies.
151
+
152
+ ```sh terminal icon="terminal"
153
+ # List top-level installed packages:
154
+ bun pm ls
155
+ ```
156
+
157
+ ```txt
158
+ my-pkg node_modules (781)
159
+ ├── @types/node@20.16.5
160
+ ├── @types/react@18.3.8
161
+ ├── @types/react-dom@18.3.0
162
+ ├── eslint@8.57.1
163
+ ├── eslint-config-next@14.2.8
164
+ ...
165
+ ```
166
+
167
+ ```sh terminal icon="terminal"
168
+ # List all installed packages:
169
+ bun pm ls -a
170
+ ```
171
+
172
+ ```txt
173
+ my-pkg node_modules
174
+ ├── @alloc/quick-lru@5.2.0
175
+ ├── @isaacs/cliui@8.0.2
176
+ │ └── strip-ansi@7.1.0
177
+ │ └── ansi-regex@6.1.0
178
+ ├── @jridgewell/gen-mapping@0.3.5
179
+ ├── @jridgewell/resolve-uri@3.1.2
180
+ ...
181
+ ```
182
+
183
+ ---
184
+
185
+ ## Create a package tarball
186
+
187
+ To create a package tarball, you can use `bun pm pack`. This will create a tarball of the package in the current directory.
188
+
189
+ ```sh terminal icon="terminal"
190
+ # Create a tarball
191
+ bun pm pack
192
+ ```
193
+
194
+ ```txt
195
+ Total files: 46
196
+ Shasum: 2ee19b6f0c6b001358449ca0eadead703f326216
197
+ Integrity: sha512-ZV0lzWTEkGAMz[...]Gl4f8lA9sl97g==
198
+ Unpacked size: 0.41MB
199
+ Packed size: 117.50KB
200
+ ```
201
+
202
+ ---
203
+
204
+ ## Shebang
205
+
206
+ If the package references `node` in the `#!/usr/bin/env node` shebang, `bun run` will by default respect it and use the system's `node` executable. You can force it to use Bun's `node` by passing `--bun` to `bun run`.
207
+
208
+ When you pass `--bun` to `bun run`, we create a symlink to the locally-installed Bun executable named `"node"` in a temporary directory and add that to your `PATH` for the duration of the script's execution.
209
+
210
+ ```sh terminal icon="terminal"
211
+ # Force using Bun's runtime instead of node
212
+ bun --bun my-script
213
+
214
+ # This also works:
215
+ bun run --bun my-script
216
+ ```
217
+
218
+ ---
219
+
220
+ ## Global installs
221
+
222
+ You can install packages globally using `bun i -g <package>`. This will install into a `.bun/install/global/node_modules` folder inside your home directory by default.
223
+
224
+ ```sh terminal icon="terminal"
225
+ # Install a package globally
226
+ bun i -g eslint
227
+
228
+ # Run a globally-installed package without the `bun run` prefix
229
+ eslint --init
230
+ ```
@@ -0,0 +1,47 @@
1
+ ---
2
+ title: Configure git to diff Bun's lockb lockfile
3
+ sidebarTitle: Configure git to diff Bun's lockfile
4
+ mode: center
5
+ ---
6
+
7
+ <Note>
8
+ Bun v1.1.39 introduced `bun.lock`, a JSONC formatted lockfile. `bun.lock` is human-readable and git-diffable without
9
+ configuration, at no cost to performance. [**Learn more.**](https://bun.com/docs/install/lockfile#text-based-lockfile)
10
+ </Note>
11
+
12
+ ---
13
+
14
+ To teach `git` how to generate a human-readable diff of Bun's binary lockfile format (`.lockb`), add the following to your local or global `.gitattributes` file:
15
+
16
+ ```js gitattributes icon="file-code"
17
+ *.lockb binary diff=lockb
18
+ ```
19
+
20
+ ---
21
+
22
+ Then add the following to you local git config with:
23
+
24
+ ```sh terminal icon="terminal"
25
+ git config diff.lockb.textconv bun
26
+ git config diff.lockb.binary true
27
+ ```
28
+
29
+ ---
30
+
31
+ To globally configure git to diff Bun's lockfile, add the following to your global git config with:
32
+
33
+ ```sh terminal icon="terminal"
34
+ git config --global diff.lockb.textconv bun
35
+ git config --global diff.lockb.binary true
36
+ ```
37
+
38
+ ---
39
+
40
+ ## How this works
41
+
42
+ Why this works:
43
+
44
+ - `textconv` tells git to run bun on the file before diffing
45
+ - `binary` tells git to treat the file as binary (so it doesn't try to diff it line-by-line)
46
+
47
+ In Bun, you can execute Bun's lockfile (`bun ./bun.lockb`) to generate a human-readable version of the lockfile and `git diff` can then use that to generate a human-readable diff.
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: Using bun install with Artifactory
3
+ sidebarTitle: JFrog Artifactory with Bun
4
+ mode: center
5
+ ---
6
+
7
+ [JFrog Artifactory](https://jfrog.com/artifactory/) is a package management system for npm, Docker, Maven, NuGet, Ruby, Helm, and more. It allows you to host your own private npm registry, npm packages, and other types of packages as well.
8
+
9
+ To use it with `bun install`, add a `bunfig.toml` file to your project with the following contents:
10
+
11
+ ---
12
+
13
+ ### Configure with bunfig.toml
14
+
15
+ Make sure to replace `MY_SUBDOMAIN` with your JFrog Artifactory subdomain, such as `jarred1234` and MY_TOKEN with your JFrog Artifactory token.
16
+
17
+ ```toml bunfig.toml icon="settings"
18
+ [install.registry]
19
+ url = "https://MY_SUBDOMAIN.jfrog.io/artifactory/api/npm/npm/_auth=MY_TOKEN"
20
+ # Bun v1.0.3+ supports using an environment variable here
21
+ # url = "$NPM_CONFIG_REGISTRY"
22
+ ```
23
+
24
+ ---
25
+
26
+ ### Configure with `$NPM_CONFIG_REGISTRY`
27
+
28
+ Like with npm, you can use the `NPM_CONFIG_REGISTRY` environment variable to configure JFrog Artifactory with bun install.
@@ -0,0 +1,25 @@
1
+ ---
2
+ title: Install a package under a different name
3
+ sidebarTitle: Install with alias
4
+ mode: center
5
+ ---
6
+
7
+ To install an npm package under an alias:
8
+
9
+ ```sh terminal icon="terminal"
10
+ bun add my-custom-name@npm:zod
11
+ ```
12
+
13
+ ---
14
+
15
+ The `zod` package can now be imported as `my-custom-name`.
16
+
17
+ ```ts index.ts icon="/icons/typescript.svg"
18
+ import { z } from "my-custom-name";
19
+
20
+ z.string();
21
+ ```
22
+
23
+ ---
24
+
25
+ See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager.
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: Configure a private registry for an organization scope with bun install
3
+ sidebarTitle: Configure a scoped registry
4
+ mode: center
5
+ ---
6
+
7
+ Private registries can be configured using either [`.npmrc`](https://bun.com/docs/install/npmrc) or [`bunfig.toml`](https://bun.com/docs/runtime/bunfig#install-registry). While both are supported, we recommend using **bunfig.toml** for enhanced flexibility and Bun-specific options.
8
+
9
+ To configure a registry for a particular npm scope:
10
+
11
+ ```toml bunfig.toml icon="settings"
12
+ [install.scopes]
13
+ # as a string
14
+ "@myorg1" = "https://usertitle:password@registry.myorg.com/"
15
+
16
+ # as an object with username/password
17
+ # you can reference environment variables
18
+ "@myorg2" = {
19
+ username = "myusername",
20
+ password = "$npm_pass",
21
+ url = "https://registry.myorg.com/"
22
+ }
23
+
24
+ # as an object with token
25
+ "@myorg3" = { token = "$npm_token", url = "https://registry.myorg.com/" }
26
+
27
+ ```
28
+
29
+ ---
30
+
31
+ Your `bunfig.toml` can reference environment variables. Bun automatically loads environment variables from `.env.local`, `.env.[NODE_ENV]`, and `.env`. See [Docs > Environment variables](https://bun.com/docs/runtime/env) for more information.
32
+
33
+ ```toml bunfig.toml icon="settings"
34
+ [install.scopes]
35
+ "@myorg3" = { token = "$npm_token", url = "https://registry.myorg.com/" }
36
+ ```
37
+
38
+ ---
39
+
40
+ See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager.
@@ -0,0 +1,50 @@
1
+ ---
2
+ title: Add a trusted dependency
3
+ sidebarTitle: Add a trusted dependency
4
+ mode: center
5
+ ---
6
+
7
+ Unlike other npm clients, Bun does not execute arbitrary lifecycle scripts for installed dependencies, such as `postinstall` and `node-gyp` builds. These scripts represent a potential security risk, as they can execute arbitrary code on your machine.
8
+
9
+ <Note>
10
+ Bun includes a default allowlist of popular packages containing `postinstall` scripts that are known to be safe. You
11
+ can see this list [here](https://github.com/oven-sh/bun/blob/main/src/install/default-trusted-dependencies.txt).
12
+ </Note>
13
+
14
+ ---
15
+
16
+ If you are seeing one of the following errors, you are probably trying to use a package that uses `postinstall` to work properly:
17
+
18
+ - `error: could not determine executable to run for package`
19
+ - `InvalidExe`
20
+
21
+ ---
22
+
23
+ To allow Bun to execute lifecycle scripts for a specific package, add the package to `trustedDependencies` in your package.json file. You can do this automatically by running the command `bun pm trust <pkg>`.
24
+
25
+ <Note>
26
+ Note that this only allows lifecycle scripts for the specific package listed in `trustedDependencies`, _not_ the
27
+ dependencies of that dependency!
28
+ </Note>
29
+
30
+ ```json package.json icon="file-json"
31
+ {
32
+ "name": "my-app",
33
+ "version": "1.0.0",
34
+ "trustedDependencies": ["my-trusted-package"] // [!code ++]
35
+ }
36
+ ```
37
+
38
+ ---
39
+
40
+ Once this is added, run a fresh install. Bun will re-install your dependencies and properly install
41
+
42
+ ```sh terminal icon="terminal"
43
+ rm -rf node_modules
44
+ rm bun.lock
45
+ bun install
46
+ ```
47
+
48
+ ---
49
+
50
+ See [Docs > Package manager > Trusted dependencies](https://bun.com/docs/install/lifecycle) for complete documentation of trusted dependencies.
@@ -0,0 +1,70 @@
1
+ ---
2
+ title: Configuring a monorepo using workspaces
3
+ sidebarTitle: Workspaces with Bun
4
+ mode: center
5
+ ---
6
+
7
+ Bun's package manager supports npm `"workspaces"`. This allows you to split a codebase into multiple distinct "packages" that live in the same repository, can depend on each other, and (when possible) share a `node_modules` directory.
8
+
9
+ Clone [this sample project](https://github.com/colinhacks/bun-workspaces) to experiment with workspaces.
10
+
11
+ ---
12
+
13
+ The root `package.json` should not contain any `"dependencies"`, `"devDependencies"`, etc. Each individual package should be self-contained and declare its own dependencies. Similarly, it's conventional to declare `"private": true` to avoid accidentally publishing the root package to `npm`.
14
+
15
+ ```json package.json icon="file-json"
16
+ {
17
+ "name": "my-monorepo",
18
+ "private": true,
19
+ "workspaces": ["packages/*"]
20
+ }
21
+ ```
22
+
23
+ ---
24
+
25
+ It's common to place all packages in a `packages` directory. The `"workspaces"` field in package.json supports glob patterns, so you can use `packages/*` to indicate that each subdirectory of `packages` should be considered separate _package_ (also known as a workspace).
26
+
27
+ ```txt File Tree icon="folder-tree"
28
+ .
29
+ ├── package.json
30
+ ├── node_modules
31
+ └── packages
32
+ ├── stuff-a
33
+ │ └── package.json
34
+ └── stuff-b
35
+ └── package.json
36
+ ```
37
+
38
+ ---
39
+
40
+ To add dependencies between workspaces, use the `"workspace:*"` syntax. Here we're adding `stuff-a` as a dependency of `stuff-b`.
41
+
42
+ ```json packages/stuff-b/package.json icon="file-json"
43
+ {
44
+ "name": "stuff-b",
45
+ "dependencies": {
46
+ "stuff-a": "workspace:*" // [!code ++]
47
+ }
48
+ }
49
+ ```
50
+
51
+ ---
52
+
53
+ Once added, run `bun install` from the project root to install dependencies for all workspaces.
54
+
55
+ ```sh terminal icon="terminal"
56
+ bun install
57
+ ```
58
+
59
+ ---
60
+
61
+ To add npm dependencies to a particular workspace, just `cd` to the appropriate directory and run `bun add` commands as you would normally. Bun will detect that you are in a workspace and hoist the dependency as needed.
62
+
63
+ ```sh terminal icon="terminal"
64
+ cd packages/stuff-a
65
+ bun add zod
66
+ ```
67
+
68
+ ---
69
+
70
+ See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager.
@@ -0,0 +1,50 @@
1
+ ---
2
+ title: Generate a yarn-compatible lockfile
3
+ sidebarTitle: Generate a yarn-compatible lockfile
4
+ mode: center
5
+ ---
6
+
7
+ <Note>
8
+ Bun v1.1.39 introduced `bun.lock`, a JSONC formatted lockfile. `bun.lock` is human-readable and git-diffable without
9
+ configuration, at no cost to performance. [**Learn more.**](https://bun.com/docs/install/lockfile#text-based-lockfile)
10
+ </Note>
11
+
12
+ ---
13
+
14
+ Use the `--yarn` flag to generate a Yarn-compatible `yarn.lock` file (in addition to `bun.lock`).
15
+
16
+ ```sh terminal icon="terminal"
17
+ bun install --yarn
18
+ ```
19
+
20
+ ---
21
+
22
+ To set this as the default behavior, add the following to your `bunfig.toml` file.
23
+
24
+ ```toml bunfig.toml icon="settings"
25
+ [install.lockfile]
26
+ print = "yarn"
27
+ ```
28
+
29
+ ---
30
+
31
+ To print a Yarn lockfile to your console without writing it to disk, "run" your `bun.lockb` with `bun`.
32
+
33
+ ```sh terminal icon="terminal"
34
+ bun bun.lockb
35
+ ```
36
+
37
+ ```txt
38
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
39
+ # yarn lockfile v1
40
+ # bun ./bun.lockb --hash: 9BFBF11D86084AAB-9418b03ff880c569-390CE6459EACEC9A...
41
+
42
+ abab@^2.0.6:
43
+ version "2.0.6"
44
+ resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz"
45
+ integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvH...
46
+ ```
47
+
48
+ ---
49
+
50
+ See [Docs > Package manager](https://bun.com/docs/cli/install) for complete documentation of Bun's package manager.
@@ -0,0 +1,66 @@
1
+ ---
2
+ title: Parse command-line arguments
3
+ sidebarTitle: Parse command-line arguments
4
+ mode: center
5
+ ---
6
+
7
+ The _argument vector_ is the list of arguments passed to the program when it is run. It is available as `Bun.argv`.
8
+
9
+ ```ts cli.ts icon="/icons/typescript.svg"
10
+ console.log(Bun.argv);
11
+ ```
12
+
13
+ ---
14
+
15
+ Running this file with arguments results in the following:
16
+
17
+ ```sh terminal icon="terminal"
18
+ bun run cli.ts --flag1 --flag2 value
19
+ ```
20
+
21
+ ```txt
22
+ [ '/path/to/bun', '/path/to/cli.ts', '--flag1', '--flag2', 'value' ]
23
+ ```
24
+
25
+ ---
26
+
27
+ To parse `argv` into a more useful format, `util.parseArgs` would be helpful.
28
+
29
+ Example:
30
+
31
+ ```ts cli.ts icon="/icons/typescript.svg"
32
+ import { parseArgs } from "util";
33
+
34
+ const { values, positionals } = parseArgs({
35
+ args: Bun.argv,
36
+ options: {
37
+ flag1: {
38
+ type: "boolean",
39
+ },
40
+ flag2: {
41
+ type: "string",
42
+ },
43
+ },
44
+ strict: true,
45
+ allowPositionals: true,
46
+ });
47
+
48
+ console.log(values);
49
+ console.log(positionals);
50
+ ```
51
+
52
+ ---
53
+
54
+ then it outputs
55
+
56
+ ```sh terminal icon="terminal"
57
+ bun run cli.ts --flag1 --flag2 value
58
+ ```
59
+
60
+ ```txt
61
+ {
62
+ flag1: true,
63
+ flag2: "value",
64
+ }
65
+ [ "/path/to/bun", "/path/to/cli.ts" ]
66
+ ```
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: Listen for CTRL+C
3
+ sidebarTitle: Listen for CTRL+C
4
+ mode: center
5
+ ---
6
+
7
+ The `ctrl+c` shortcut sends an _interrupt signal_ to the running process. This signal can be intercepted by listening for the `SIGINT` event. If you want to close the process, you must explicitly call `process.exit()`.
8
+
9
+ ```ts process.ts icon="/icons/typescript.svg"
10
+ process.on("SIGINT", () => {
11
+ console.log("Ctrl-C was pressed");
12
+ process.exit();
13
+ });
14
+ ```
15
+
16
+ ---
17
+
18
+ See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.