bun-types 1.3.2-canary.20251105T140650 → 1.3.2-canary.20251106T140813

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 (308) hide show
  1. package/docs/README.md +28 -0
  2. package/package.json +1 -1
  3. package/docs/api/binary-data.md +0 -1038
  4. package/docs/api/cc.md +0 -197
  5. package/docs/api/color.md +0 -262
  6. package/docs/api/console.md +0 -57
  7. package/docs/api/cookie.md +0 -449
  8. package/docs/api/dns.md +0 -110
  9. package/docs/api/fetch.md +0 -463
  10. package/docs/api/ffi.md +0 -557
  11. package/docs/api/file-io.md +0 -366
  12. package/docs/api/file-system-router.md +0 -112
  13. package/docs/api/file.md +0 -19
  14. package/docs/api/glob.md +0 -178
  15. package/docs/api/globals.md +0 -387
  16. package/docs/api/hashing.md +0 -319
  17. package/docs/api/html-rewriter.md +0 -334
  18. package/docs/api/http.md +0 -1408
  19. package/docs/api/import-meta.md +0 -69
  20. package/docs/api/node-api.md +0 -14
  21. package/docs/api/redis.md +0 -597
  22. package/docs/api/s3.md +0 -850
  23. package/docs/api/secrets.md +0 -319
  24. package/docs/api/semver.md +0 -52
  25. package/docs/api/spawn.md +0 -582
  26. package/docs/api/sql.md +0 -1374
  27. package/docs/api/sqlite.md +0 -694
  28. package/docs/api/streams.md +0 -230
  29. package/docs/api/tcp.md +0 -221
  30. package/docs/api/transpiler.md +0 -276
  31. package/docs/api/udp.md +0 -123
  32. package/docs/api/utils.md +0 -891
  33. package/docs/api/websockets.md +0 -573
  34. package/docs/api/workers.md +0 -322
  35. package/docs/api/yaml.md +0 -668
  36. package/docs/benchmarks.md +0 -120
  37. package/docs/bun-flavored-toml.md +0 -42
  38. package/docs/bundler/css.md +0 -1028
  39. package/docs/bundler/css_modules.md +0 -145
  40. package/docs/bundler/executables.md +0 -626
  41. package/docs/bundler/fullstack.md +0 -418
  42. package/docs/bundler/hmr.md +0 -234
  43. package/docs/bundler/html.md +0 -349
  44. package/docs/bundler/index.md +0 -1735
  45. package/docs/bundler/intro.md +0 -75
  46. package/docs/bundler/loaders.md +0 -410
  47. package/docs/bundler/macros.md +0 -329
  48. package/docs/bundler/plugins.md +0 -449
  49. package/docs/bundler/vs-esbuild.md +0 -1127
  50. package/docs/cli/add.md +0 -173
  51. package/docs/cli/bun-completions.md +0 -3
  52. package/docs/cli/bun-create.md +0 -338
  53. package/docs/cli/bun-install.md +0 -349
  54. package/docs/cli/bun-upgrade.md +0 -39
  55. package/docs/cli/bunx.md +0 -89
  56. package/docs/cli/filter.md +0 -90
  57. package/docs/cli/info.md +0 -65
  58. package/docs/cli/init.md +0 -85
  59. package/docs/cli/install.md +0 -344
  60. package/docs/cli/link.md +0 -40
  61. package/docs/cli/outdated.md +0 -90
  62. package/docs/cli/patch-commit.md +0 -11
  63. package/docs/cli/pm.md +0 -285
  64. package/docs/cli/publish.md +0 -120
  65. package/docs/cli/remove.md +0 -7
  66. package/docs/cli/run.md +0 -261
  67. package/docs/cli/test.md +0 -397
  68. package/docs/cli/unlink.md +0 -9
  69. package/docs/cli/update.md +0 -129
  70. package/docs/cli/why.md +0 -67
  71. package/docs/contributing/upgrading-webkit.md +0 -57
  72. package/docs/ecosystem/elysia.md +0 -24
  73. package/docs/ecosystem/express.md +0 -37
  74. package/docs/ecosystem/hono.md +0 -18
  75. package/docs/ecosystem/react.md +0 -65
  76. package/docs/ecosystem/stric.md +0 -38
  77. package/docs/guides/binary/arraybuffer-to-array.md +0 -27
  78. package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
  79. package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
  80. package/docs/guides/binary/arraybuffer-to-string.md +0 -15
  81. package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
  82. package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
  83. package/docs/guides/binary/blob-to-dataview.md +0 -14
  84. package/docs/guides/binary/blob-to-stream.md +0 -14
  85. package/docs/guides/binary/blob-to-string.md +0 -15
  86. package/docs/guides/binary/blob-to-typedarray.md +0 -14
  87. package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
  88. package/docs/guides/binary/buffer-to-blob.md +0 -14
  89. package/docs/guides/binary/buffer-to-readablestream.md +0 -41
  90. package/docs/guides/binary/buffer-to-string.md +0 -25
  91. package/docs/guides/binary/buffer-to-typedarray.md +0 -14
  92. package/docs/guides/binary/dataview-to-string.md +0 -15
  93. package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
  94. package/docs/guides/binary/typedarray-to-blob.md +0 -16
  95. package/docs/guides/binary/typedarray-to-buffer.md +0 -14
  96. package/docs/guides/binary/typedarray-to-dataview.md +0 -14
  97. package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
  98. package/docs/guides/binary/typedarray-to-string.md +0 -16
  99. package/docs/guides/deployment/railway.md +0 -157
  100. package/docs/guides/ecosystem/astro.md +0 -72
  101. package/docs/guides/ecosystem/discordjs.md +0 -77
  102. package/docs/guides/ecosystem/docker.md +0 -140
  103. package/docs/guides/ecosystem/drizzle.md +0 -185
  104. package/docs/guides/ecosystem/edgedb.md +0 -228
  105. package/docs/guides/ecosystem/elysia.md +0 -31
  106. package/docs/guides/ecosystem/express.md +0 -40
  107. package/docs/guides/ecosystem/hono.md +0 -39
  108. package/docs/guides/ecosystem/mongoose.md +0 -87
  109. package/docs/guides/ecosystem/neon-drizzle.md +0 -220
  110. package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
  111. package/docs/guides/ecosystem/nextjs.md +0 -49
  112. package/docs/guides/ecosystem/nuxt.md +0 -56
  113. package/docs/guides/ecosystem/pm2.md +0 -57
  114. package/docs/guides/ecosystem/prisma.md +0 -141
  115. package/docs/guides/ecosystem/qwik.md +0 -107
  116. package/docs/guides/ecosystem/react.md +0 -50
  117. package/docs/guides/ecosystem/remix.md +0 -78
  118. package/docs/guides/ecosystem/render.md +0 -79
  119. package/docs/guides/ecosystem/sentry.md +0 -52
  120. package/docs/guides/ecosystem/solidstart.md +0 -58
  121. package/docs/guides/ecosystem/ssr-react.md +0 -51
  122. package/docs/guides/ecosystem/stric.md +0 -55
  123. package/docs/guides/ecosystem/sveltekit.md +0 -125
  124. package/docs/guides/ecosystem/systemd.md +0 -113
  125. package/docs/guides/ecosystem/vite.md +0 -71
  126. package/docs/guides/html-rewriter/extract-links.md +0 -68
  127. package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
  128. package/docs/guides/http/cluster.md +0 -66
  129. package/docs/guides/http/fetch-unix.md +0 -33
  130. package/docs/guides/http/fetch.md +0 -24
  131. package/docs/guides/http/file-uploads.md +0 -94
  132. package/docs/guides/http/hot.md +0 -26
  133. package/docs/guides/http/proxy.md +0 -24
  134. package/docs/guides/http/server.md +0 -46
  135. package/docs/guides/http/simple.md +0 -18
  136. package/docs/guides/http/stream-file.md +0 -48
  137. package/docs/guides/http/stream-iterator.md +0 -47
  138. package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
  139. package/docs/guides/http/tls.md +0 -30
  140. package/docs/guides/install/add-dev.md +0 -26
  141. package/docs/guides/install/add-git.md +0 -36
  142. package/docs/guides/install/add-optional.md +0 -25
  143. package/docs/guides/install/add-peer.md +0 -43
  144. package/docs/guides/install/add-tarball.md +0 -33
  145. package/docs/guides/install/add.md +0 -42
  146. package/docs/guides/install/azure-artifacts.md +0 -73
  147. package/docs/guides/install/cicd.md +0 -41
  148. package/docs/guides/install/custom-registry.md +0 -30
  149. package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
  150. package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
  151. package/docs/guides/install/jfrog-artifactory.md +0 -28
  152. package/docs/guides/install/npm-alias.md +0 -23
  153. package/docs/guides/install/registry-scope.md +0 -38
  154. package/docs/guides/install/trusted.md +0 -46
  155. package/docs/guides/install/workspaces.md +0 -70
  156. package/docs/guides/install/yarnlock.md +0 -44
  157. package/docs/guides/process/argv.md +0 -58
  158. package/docs/guides/process/ctrl-c.md +0 -16
  159. package/docs/guides/process/ipc.md +0 -66
  160. package/docs/guides/process/nanoseconds.md +0 -13
  161. package/docs/guides/process/os-signals.md +0 -39
  162. package/docs/guides/process/spawn-stderr.md +0 -31
  163. package/docs/guides/process/spawn-stdout.md +0 -26
  164. package/docs/guides/process/spawn.md +0 -41
  165. package/docs/guides/process/stdin.md +0 -54
  166. package/docs/guides/read-file/arraybuffer.md +0 -28
  167. package/docs/guides/read-file/buffer.md +0 -19
  168. package/docs/guides/read-file/exists.md +0 -16
  169. package/docs/guides/read-file/json.md +0 -17
  170. package/docs/guides/read-file/mime.md +0 -20
  171. package/docs/guides/read-file/stream.md +0 -26
  172. package/docs/guides/read-file/string.md +0 -22
  173. package/docs/guides/read-file/uint8array.md +0 -21
  174. package/docs/guides/read-file/watch.md +0 -68
  175. package/docs/guides/runtime/build-time-constants.md +0 -293
  176. package/docs/guides/runtime/cicd.md +0 -43
  177. package/docs/guides/runtime/codesign-macos-executable.md +0 -56
  178. package/docs/guides/runtime/define-constant.md +0 -145
  179. package/docs/guides/runtime/delete-directory.md +0 -37
  180. package/docs/guides/runtime/delete-file.md +0 -19
  181. package/docs/guides/runtime/heap-snapshot.md +0 -26
  182. package/docs/guides/runtime/import-html.md +0 -15
  183. package/docs/guides/runtime/import-json.md +0 -44
  184. package/docs/guides/runtime/import-toml.md +0 -30
  185. package/docs/guides/runtime/import-yaml.md +0 -102
  186. package/docs/guides/runtime/read-env.md +0 -32
  187. package/docs/guides/runtime/set-env.md +0 -47
  188. package/docs/guides/runtime/shell.md +0 -40
  189. package/docs/guides/runtime/timezone.md +0 -35
  190. package/docs/guides/runtime/tsconfig-paths.md +0 -29
  191. package/docs/guides/runtime/typescript.md +0 -49
  192. package/docs/guides/runtime/vscode-debugger.md +0 -47
  193. package/docs/guides/runtime/web-debugger.md +0 -82
  194. package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
  195. package/docs/guides/streams/node-readable-to-blob.md +0 -11
  196. package/docs/guides/streams/node-readable-to-json.md +0 -12
  197. package/docs/guides/streams/node-readable-to-string.md +0 -12
  198. package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
  199. package/docs/guides/streams/to-array.md +0 -14
  200. package/docs/guides/streams/to-arraybuffer.md +0 -14
  201. package/docs/guides/streams/to-blob.md +0 -14
  202. package/docs/guides/streams/to-buffer.md +0 -15
  203. package/docs/guides/streams/to-json.md +0 -14
  204. package/docs/guides/streams/to-string.md +0 -14
  205. package/docs/guides/streams/to-typedarray.md +0 -22
  206. package/docs/guides/test/bail.md +0 -22
  207. package/docs/guides/test/coverage-threshold.md +0 -60
  208. package/docs/guides/test/coverage.md +0 -44
  209. package/docs/guides/test/happy-dom.md +0 -68
  210. package/docs/guides/test/migrate-from-jest.md +0 -143
  211. package/docs/guides/test/mock-clock.md +0 -48
  212. package/docs/guides/test/mock-functions.md +0 -68
  213. package/docs/guides/test/rerun-each.md +0 -14
  214. package/docs/guides/test/run-tests.md +0 -111
  215. package/docs/guides/test/skip-tests.md +0 -39
  216. package/docs/guides/test/snapshot.md +0 -95
  217. package/docs/guides/test/spy-on.md +0 -46
  218. package/docs/guides/test/svelte-test.md +0 -120
  219. package/docs/guides/test/testing-library.md +0 -92
  220. package/docs/guides/test/timeout.md +0 -15
  221. package/docs/guides/test/todo-tests.md +0 -67
  222. package/docs/guides/test/update-snapshots.md +0 -46
  223. package/docs/guides/test/watch-mode.md +0 -19
  224. package/docs/guides/util/base64.md +0 -15
  225. package/docs/guides/util/deep-equals.md +0 -39
  226. package/docs/guides/util/deflate.md +0 -18
  227. package/docs/guides/util/detect-bun.md +0 -23
  228. package/docs/guides/util/entrypoint.md +0 -17
  229. package/docs/guides/util/escape-html.md +0 -22
  230. package/docs/guides/util/file-url-to-path.md +0 -14
  231. package/docs/guides/util/gzip.md +0 -18
  232. package/docs/guides/util/hash-a-password.md +0 -54
  233. package/docs/guides/util/import-meta-dir.md +0 -13
  234. package/docs/guides/util/import-meta-file.md +0 -13
  235. package/docs/guides/util/import-meta-path.md +0 -13
  236. package/docs/guides/util/javascript-uuid.md +0 -23
  237. package/docs/guides/util/main.md +0 -32
  238. package/docs/guides/util/path-to-file-url.md +0 -14
  239. package/docs/guides/util/sleep.md +0 -22
  240. package/docs/guides/util/version.md +0 -21
  241. package/docs/guides/util/which-path-to-executable-bin.md +0 -15
  242. package/docs/guides/websocket/compression.md +0 -31
  243. package/docs/guides/websocket/context.md +0 -77
  244. package/docs/guides/websocket/pubsub.md +0 -41
  245. package/docs/guides/websocket/simple.md +0 -33
  246. package/docs/guides/write-file/append.md +0 -52
  247. package/docs/guides/write-file/basic.md +0 -44
  248. package/docs/guides/write-file/blob.md +0 -28
  249. package/docs/guides/write-file/cat.md +0 -17
  250. package/docs/guides/write-file/file-cp.md +0 -16
  251. package/docs/guides/write-file/filesink.md +0 -52
  252. package/docs/guides/write-file/response.md +0 -17
  253. package/docs/guides/write-file/stdout.md +0 -21
  254. package/docs/guides/write-file/stream.md +0 -17
  255. package/docs/guides/write-file/unlink.md +0 -16
  256. package/docs/index.md +0 -77
  257. package/docs/install/audit.md +0 -57
  258. package/docs/install/cache.md +0 -59
  259. package/docs/install/catalogs.md +0 -298
  260. package/docs/install/index.md +0 -248
  261. package/docs/install/isolated.md +0 -197
  262. package/docs/install/lifecycle.md +0 -46
  263. package/docs/install/lockfile.md +0 -58
  264. package/docs/install/npmrc.md +0 -105
  265. package/docs/install/overrides.md +0 -73
  266. package/docs/install/patch.md +0 -59
  267. package/docs/install/registries.md +0 -30
  268. package/docs/install/security-scanner-api.md +0 -81
  269. package/docs/install/workspaces.md +0 -114
  270. package/docs/installation.md +0 -327
  271. package/docs/project/asan.md +0 -124
  272. package/docs/project/benchmarking.md +0 -203
  273. package/docs/project/bindgen.md +0 -225
  274. package/docs/project/building-windows.md +0 -162
  275. package/docs/project/contributing.md +0 -347
  276. package/docs/project/internals/build-process-for-ci.md +0 -75
  277. package/docs/project/licensing.md +0 -73
  278. package/docs/project/roadmap.md +0 -87
  279. package/docs/quickstart.md +0 -157
  280. package/docs/runtime/autoimport.md +0 -94
  281. package/docs/runtime/bun-apis.md +0 -207
  282. package/docs/runtime/bunfig.md +0 -772
  283. package/docs/runtime/debugger.md +0 -325
  284. package/docs/runtime/env.md +0 -253
  285. package/docs/runtime/hot.md +0 -145
  286. package/docs/runtime/index.md +0 -312
  287. package/docs/runtime/jsx.md +0 -385
  288. package/docs/runtime/loaders.md +0 -130
  289. package/docs/runtime/modules.md +0 -320
  290. package/docs/runtime/nodejs-apis.md +0 -463
  291. package/docs/runtime/plugins.md +0 -561
  292. package/docs/runtime/shell.md +0 -605
  293. package/docs/runtime/typescript.md +0 -139
  294. package/docs/runtime/web-apis.md +0 -128
  295. package/docs/test/configuration.md +0 -154
  296. package/docs/test/coverage.md +0 -142
  297. package/docs/test/discovery.md +0 -85
  298. package/docs/test/dom.md +0 -75
  299. package/docs/test/examples/concurrent-test-glob.md +0 -132
  300. package/docs/test/hot.md +0 -15
  301. package/docs/test/lifecycle.md +0 -81
  302. package/docs/test/mocks.md +0 -313
  303. package/docs/test/reporters.md +0 -117
  304. package/docs/test/runtime-behavior.md +0 -95
  305. package/docs/test/snapshots.md +0 -68
  306. package/docs/test/time.md +0 -126
  307. package/docs/test/writing.md +0 -825
  308. package/docs/typescript.md +0 -53
@@ -1,248 +0,0 @@
1
- The `bun` CLI contains an `npm`-compatible package manager designed to be a faster replacement for existing package management tools like `npm`, `yarn`, and `pnpm`. It's designed for Node.js compatibility; use it in any Bun or Node.js project.
2
-
3
- {% callout %}
4
-
5
- **⚡️ 80x faster** — Switch from `npm install` to `bun install` in any Node.js project to make your installations up to 80x faster.
6
-
7
- {% image src="https://user-images.githubusercontent.com/709451/147004342-571b6123-17a9-49a2-8bfd-dcfc5204047e.png" height="200" /%}
8
-
9
- {% /callout %}
10
-
11
- {% details summary="For Linux users" %}
12
- The minimum Linux Kernel version is 5.1. If you're on Linux kernel 5.1 - 5.5, `bun install` should still work, but HTTP requests will be slow due to a lack of support for io_uring's `connect()` operation.
13
-
14
- If you're using Ubuntu 20.04, here's how to install a [newer kernel](https://wiki.ubuntu.com/Kernel/LTSEnablementStack):
15
-
16
- ```bash
17
- # If this returns a version >= 5.6, you don't need to do anything
18
- uname -r
19
-
20
- # Install the official Ubuntu hardware enablement kernel
21
- sudo apt install --install-recommends linux-generic-hwe-20.04
22
- ```
23
-
24
- {% /details %}
25
-
26
- ## Manage dependencies
27
-
28
- ### `bun install`
29
-
30
- To install all dependencies of a project:
31
-
32
- ```bash
33
- $ bun install
34
- ```
35
-
36
- On Linux, `bun install` tends to install packages 20-100x faster than `npm install`. On macOS, it's more like 4-80x.
37
-
38
- ![package install benchmark](https://user-images.githubusercontent.com/709451/147004342-571b6123-17a9-49a2-8bfd-dcfc5204047e.png)
39
-
40
- Running `bun install` will:
41
-
42
- - **Install** all `dependencies`, `devDependencies`, and `optionalDependencies`. Bun will install `peerDependencies` by default.
43
- - **Run** your project's `{pre|post}install` scripts at the appropriate time. For security reasons Bun _does not execute_ lifecycle scripts of installed dependencies.
44
- - **Write** a `bun.lock` lockfile to the project root.
45
-
46
- To install in production mode (i.e. without `devDependencies`):
47
-
48
- ```bash
49
- $ bun install --production
50
- ```
51
-
52
- To install dependencies without allowing changes to lockfile (useful on CI):
53
-
54
- ```bash
55
- $ bun install --frozen-lockfile
56
- ```
57
-
58
- To exclude dependency types from installing, use `--omit` with `dev`, `optional`, or `peer`:
59
-
60
- ```bash
61
- # Disable devDependencies and optionalDependencies
62
- $ bun install --omit=dev --omit=optional
63
- ```
64
-
65
- To perform a dry run (i.e. don't actually install anything or update the lockfile):
66
-
67
- ```bash
68
- $ bun install --dry-run
69
- ```
70
-
71
- To generate a lockfile without install packages:
72
-
73
- ```bash
74
- $ bun install --lockfile-only
75
- ```
76
-
77
- To modify logging verbosity:
78
-
79
- ```bash
80
- $ bun install --verbose # debug logging
81
- $ bun install --silent # no logging
82
- ```
83
-
84
- To use isolated installs instead of the default hoisted strategy:
85
-
86
- ```bash
87
- $ bun install --linker isolated
88
- ```
89
-
90
- Isolated installs create strict dependency isolation similar to pnpm, preventing phantom dependencies and ensuring more deterministic builds. For complete documentation, see [Isolated installs](https://bun.com/docs/install/isolated).
91
-
92
- To protect against supply chain attacks, set a minimum age (in seconds) for package versions:
93
-
94
- ```bash
95
- $ bun install --minimum-release-age 259200 # 3 days
96
- ```
97
-
98
- {% details summary="Configuring behavior" %}
99
- The default behavior of `bun install` can be configured in `bunfig.toml`:
100
-
101
- ```toml
102
- [install]
103
-
104
- # whether to install optionalDependencies
105
- optional = true
106
-
107
- # whether to install devDependencies
108
- dev = true
109
-
110
- # whether to install peerDependencies
111
- peer = true
112
-
113
- # equivalent to `--production` flag
114
- production = false
115
-
116
- # equivalent to `--save-text-lockfile` flag
117
- saveTextLockfile = false
118
-
119
- # equivalent to `--frozen-lockfile` flag
120
- frozenLockfile = false
121
-
122
- # equivalent to `--dry-run` flag
123
- dryRun = false
124
-
125
- # equivalent to `--concurrent-scripts` flag
126
- concurrentScripts = 16 # (cpu count or GOMAXPROCS) x2
127
-
128
- # installation strategy: "hoisted" or "isolated"
129
- # default: "hoisted"
130
- linker = "hoisted"
131
-
132
- # minimum package age in seconds (protects against supply chain attacks)
133
- minimumReleaseAge = 259200 # 3 days
134
-
135
- # exclude packages from age requirement
136
- minimumReleaseAgeExcludes = ["@types/node", "typescript"]
137
- ```
138
-
139
- {% /details %}
140
-
141
- ### `bun add`
142
-
143
- To add a particular package:
144
-
145
- ```bash
146
- $ bun add preact
147
- ```
148
-
149
- To specify a version, version range, or tag:
150
-
151
- ```bash
152
- $ bun add zod@3.20.0
153
- $ bun add zod@^3.0.0
154
- $ bun add zod@latest
155
- ```
156
-
157
- To add a package as a dev dependency (`"devDependencies"`):
158
-
159
- ```bash
160
- $ bun add --dev @types/react
161
- $ bun add -d @types/react
162
- ```
163
-
164
- To add a package as an optional dependency (`"optionalDependencies"`):
165
-
166
- ```bash
167
- $ bun add --optional lodash
168
- ```
169
-
170
- To add a package as a peer dependency (`"peerDependencies"`):
171
-
172
- ```bash
173
- $ bun add --peer @types/bun
174
- ```
175
-
176
- To install a package globally:
177
-
178
- ```bash
179
- $ bun add --global cowsay # or `bun add -g cowsay`
180
- $ cowsay "Bun!"
181
- ______
182
- < Bun! >
183
- ------
184
- \ ^__^
185
- \ (oo)\_______
186
- (__)\ )\/\
187
- ||----w |
188
- || ||
189
- ```
190
-
191
- {% details summary="Configuring global installation behavior" %}
192
-
193
- ```toml
194
- [install]
195
- # where `bun install --global` installs packages
196
- globalDir = "~/.bun/install/global"
197
-
198
- # where globally-installed package bins are linked
199
- globalBinDir = "~/.bun/bin"
200
- ```
201
-
202
- {% /details %}
203
- To view a complete list of options for a given command:
204
-
205
- ```bash
206
- $ bun add --help
207
- ```
208
-
209
- ### `bun remove`
210
-
211
- To remove a dependency:
212
-
213
- ```bash
214
- $ bun remove preact
215
- ```
216
-
217
- ## Git dependencies
218
-
219
- To add a dependency from a git repository:
220
-
221
- ```bash
222
- $ bun install git@github.com:moment/moment.git
223
- ```
224
-
225
- Bun supports a variety of protocols, including [`github`](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#github-urls), [`git`](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#git-urls-as-dependencies), `git+ssh`, `git+https`, and many more.
226
-
227
- ```json
228
- {
229
- "dependencies": {
230
- "dayjs": "git+https://github.com/iamkun/dayjs.git",
231
- "lodash": "git+ssh://github.com/lodash/lodash.git#4.17.21",
232
- "moment": "git@github.com:moment/moment.git",
233
- "zod": "github:colinhacks/zod"
234
- }
235
- }
236
- ```
237
-
238
- ## Tarball dependencies
239
-
240
- A package name can correspond to a publicly hosted `.tgz` file. During `bun install`, Bun will download and install the package from the specified tarball URL, rather than from the package registry.
241
-
242
- ```json#package.json
243
- {
244
- "dependencies": {
245
- "zod": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz"
246
- }
247
- }
248
- ```
@@ -1,197 +0,0 @@
1
- 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
-
3
- ## What are isolated installs?
4
-
5
- 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.
6
-
7
- ### Key benefits
8
-
9
- - **Prevents phantom dependencies** — Packages cannot accidentally import dependencies they haven't declared
10
- - **Deterministic resolution** — Same dependency tree regardless of what else is installed
11
- - **Better for monorepos** — Workspace isolation prevents cross-contamination between packages
12
- - **Reproducible builds** — More predictable resolution behavior across environments
13
-
14
- ## Using isolated installs
15
-
16
- ### Command line
17
-
18
- Use the `--linker` flag to specify the installation strategy:
19
-
20
- ```bash
21
- # Use isolated installs
22
- $ bun install --linker isolated
23
-
24
- # Use traditional hoisted installs
25
- $ bun install --linker hoisted
26
- ```
27
-
28
- ### Configuration file
29
-
30
- Set the default linker strategy in your `bunfig.toml`:
31
-
32
- ```toml
33
- [install]
34
- linker = "isolated"
35
- ```
36
-
37
- ### Default behavior
38
-
39
- - **Workspaces**: Bun uses **isolated** installs by default to prevent hoisting-related bugs
40
- - **Single projects**: Bun uses **hoisted** installs by default
41
-
42
- To override the default, use `--linker hoisted` or `--linker isolated`, or set it in your configuration file.
43
-
44
- ## How isolated installs work
45
-
46
- ### Directory structure
47
-
48
- Instead of hoisting dependencies, isolated installs create a two-tier structure:
49
-
50
- ```
51
- node_modules/
52
- ├── .bun/ # Central package store
53
- │ ├── package@1.0.0/ # Versioned package installations
54
- │ │ └── node_modules/
55
- │ │ └── package/ # Actual package files
56
- │ ├── @scope+package@2.1.0/ # Scoped packages (+ replaces /)
57
- │ │ └── node_modules/
58
- │ │ └── @scope/
59
- │ │ └── package/
60
- │ └── ...
61
- └── package-name -> .bun/package@1.0.0/node_modules/package # Symlinks
62
- ```
63
-
64
- ### Resolution algorithm
65
-
66
- 1. **Central store** — All packages are installed in `node_modules/.bun/package@version/` directories
67
- 2. **Symlinks** — Top-level `node_modules` contains symlinks pointing to the central store
68
- 3. **Peer resolution** — Complex peer dependencies create specialized directory names
69
- 4. **Deduplication** — Packages with identical package IDs and peer dependency sets are shared
70
-
71
- ### Workspace handling
72
-
73
- In monorepos, workspace dependencies are handled specially:
74
-
75
- - **Workspace packages** — Symlinked directly to their source directories, not the store
76
- - **Workspace dependencies** — Can access other workspace packages in the monorepo
77
- - **External dependencies** — Installed in the isolated store with proper isolation
78
-
79
- ## Comparison with hoisted installs
80
-
81
- | Aspect | Hoisted (npm/Yarn) | Isolated (pnpm-like) |
82
- | ------------------------- | ------------------------------------------ | --------------------------------------- |
83
- | **Dependency access** | Packages can access any hoisted dependency | Packages only see declared dependencies |
84
- | **Phantom dependencies** | ❌ Possible | ✅ Prevented |
85
- | **Disk usage** | ✅ Lower (shared installs) | ✅ Similar (uses symlinks) |
86
- | **Determinism** | ❌ Less deterministic | ✅ More deterministic |
87
- | **Node.js compatibility** | ✅ Standard behavior | ✅ Compatible via symlinks |
88
- | **Best for** | Single projects, legacy code | Monorepos, strict dependency management |
89
-
90
- ## Advanced features
91
-
92
- ### Peer dependency handling
93
-
94
- Isolated installs handle peer dependencies through sophisticated resolution:
95
-
96
- ```bash
97
- # Package with peer dependencies creates specialized paths
98
- node_modules/.bun/package@1.0.0_react@18.2.0/
99
- ```
100
-
101
- The directory name encodes both the package version and its peer dependency versions, ensuring each unique combination gets its own installation.
102
-
103
- ### Backend strategies
104
-
105
- Bun uses different file operation strategies for performance:
106
-
107
- - **Clonefile** (macOS) — Copy-on-write filesystem clones for maximum efficiency
108
- - **Hardlink** (Linux/Windows) — Hardlinks to save disk space
109
- - **Copyfile** (fallback) — Full file copies when other methods aren't available
110
-
111
- ### Debugging isolated installs
112
-
113
- Enable verbose logging to understand the installation process:
114
-
115
- ```bash
116
- $ bun install --linker isolated --verbose
117
- ```
118
-
119
- This shows:
120
-
121
- - Store entry creation
122
- - Symlink operations
123
- - Peer dependency resolution
124
- - Deduplication decisions
125
-
126
- ## Troubleshooting
127
-
128
- ### Compatibility issues
129
-
130
- Some packages may not work correctly with isolated installs due to:
131
-
132
- - **Hardcoded paths** — Packages that assume a flat `node_modules` structure
133
- - **Dynamic imports** — Runtime imports that don't follow Node.js resolution
134
- - **Build tools** — Tools that scan `node_modules` directly
135
-
136
- If you encounter issues, you can:
137
-
138
- 1. **Switch to hoisted mode** for specific projects:
139
-
140
- ```bash
141
- $ bun install --linker hoisted
142
- ```
143
-
144
- 2. **Report compatibility issues** to help improve isolated install support
145
-
146
- ### Performance considerations
147
-
148
- - **Install time** — May be slightly slower due to symlink operations
149
- - **Disk usage** — Similar to hoisted (uses symlinks, not file copies)
150
- - **Memory usage** — Higher during install due to complex peer resolution
151
-
152
- ## Migration guide
153
-
154
- ### From npm/Yarn
155
-
156
- ```bash
157
- # Remove existing node_modules and lockfiles
158
- $ rm -rf node_modules package-lock.json yarn.lock
159
-
160
- # Install with isolated linker
161
- $ bun install --linker isolated
162
- ```
163
-
164
- ### From pnpm
165
-
166
- Isolated installs are conceptually similar to pnpm, so migration should be straightforward:
167
-
168
- ```bash
169
- # Remove pnpm files
170
- $ rm -rf node_modules pnpm-lock.yaml
171
-
172
- # Install with Bun's isolated linker
173
- $ bun install --linker isolated
174
- ```
175
-
176
- The main difference is that Bun uses symlinks in `node_modules` while pnpm uses a global store with symlinks.
177
-
178
- ## When to use isolated installs
179
-
180
- **Isolated installs are the default for workspaces.** You may want to explicitly enable them for single projects when:
181
-
182
- - Strict dependency management is required
183
- - Preventing phantom dependencies is important
184
- - Building libraries that need deterministic dependencies
185
-
186
- **Switch to hoisted installs (including for workspaces) when:**
187
-
188
- - Working with legacy code that assumes flat `node_modules`
189
- - Compatibility with existing build tools is required
190
- - Working in environments where symlinks aren't well supported
191
- - You prefer the simpler traditional npm behavior
192
-
193
- ## Related documentation
194
-
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
@@ -1,46 +0,0 @@
1
- Packages on `npm` can define _lifecycle scripts_ in their `package.json`. Some of the most common are below, but there are [many others](https://docs.npmjs.com/cli/v10/using-npm/scripts).
2
-
3
- - `preinstall`: Runs before the package is installed
4
- - `postinstall`: Runs after the package is installed
5
- - `preuninstall`: Runs before the package is uninstalled
6
- - `prepublishOnly`: Runs before the package is published
7
-
8
- These scripts are arbitrary shell commands that the package manager is expected to read and execute at the appropriate time. But executing arbitrary scripts represents a potential security risk, so—unlike other `npm` clients—Bun does not execute arbitrary lifecycle scripts by default.
9
-
10
- ## `postinstall`
11
-
12
- The `postinstall` script is particularly important. It's widely used to build or install platform-specific binaries for packages that are implemented as [native Node.js add-ons](https://nodejs.org/api/addons.html). For example, `node-sass` is a popular package that uses `postinstall` to build a native binary for Sass.
13
-
14
- ```json
15
- {
16
- "name": "my-app",
17
- "version": "1.0.0",
18
- "dependencies": {
19
- "node-sass": "^6.0.1"
20
- }
21
- }
22
- ```
23
-
24
- ## `trustedDependencies`
25
-
26
- Instead of executing arbitrary scripts, Bun uses a "default-secure" approach. You can add certain packages to an allow list, and Bun will execute lifecycle scripts for those packages. To tell Bun to allow lifecycle scripts for a particular package, add the package name to `trustedDependencies` array in your `package.json`.
27
-
28
- ```json-diff
29
- {
30
- "name": "my-app",
31
- "version": "1.0.0",
32
- + "trustedDependencies": ["node-sass"]
33
- }
34
- ```
35
-
36
- Once added to `trustedDependencies`, install/re-install the package. Bun will read this field and run lifecycle scripts for `my-trusted-package`.
37
-
38
- As of Bun v1.0.16, the top 500 npm packages with lifecycle scripts are allowed by default. You can see the full list [here](https://github.com/oven-sh/bun/blob/main/src/install/default-trusted-dependencies.txt).
39
-
40
- ## `--ignore-scripts`
41
-
42
- To disable lifecycle scripts for all packages, use the `--ignore-scripts` flag.
43
-
44
- ```bash
45
- $ bun install --ignore-scripts
46
- ```
@@ -1,58 +0,0 @@
1
- Running `bun install` will create a lockfile called `bun.lock`.
2
-
3
- #### Should it be committed to git?
4
-
5
- Yes
6
-
7
- #### Generate a lockfile without installing?
8
-
9
- To generate a lockfile without installing to `node_modules` you can use the `--lockfile-only` flag. The lockfile will always be saved to disk, even if it is up-to-date with the `package.json`(s) for your project.
10
-
11
- ```bash
12
- $ bun install --lockfile-only
13
- ```
14
-
15
- {% callout %}
16
- **Note** - using `--lockfile-only` will still populate the global install cache with registry metadata and git/tarball dependencies.
17
- {% /callout %}
18
-
19
- #### Can I opt out?
20
-
21
- To install without creating a lockfile:
22
-
23
- ```bash
24
- $ bun install --no-save
25
- ```
26
-
27
- To install a Yarn lockfile _in addition_ to `bun.lock`.
28
-
29
- {% codetabs %}
30
-
31
- ```bash#CLI flag
32
- $ bun install --yarn
33
- ```
34
-
35
- ```toml#bunfig.toml
36
- [install.lockfile]
37
- # whether to save a non-Bun lockfile alongside bun.lock
38
- # only "yarn" is supported
39
- print = "yarn"
40
- ```
41
-
42
- {% /codetabs %}
43
-
44
- #### Text-based lockfile
45
-
46
- Bun v1.2 changed the default lockfile format to the text-based `bun.lock`. Existing binary `bun.lockb` lockfiles can be migrated to the new format by running `bun install --save-text-lockfile --frozen-lockfile --lockfile-only` and deleting `bun.lockb`.
47
-
48
- More information about the new lockfile format can be found on [our blogpost](https://bun.com/blog/bun-lock-text-lockfile).
49
-
50
- #### Automatic lockfile migration
51
-
52
- When running `bun install` in a project without a `bun.lock`, Bun automatically migrates existing lockfiles:
53
-
54
- - `yarn.lock` (v1)
55
- - `package-lock.json` (npm)
56
- - `pnpm-lock.yaml` (pnpm)
57
-
58
- The original lockfile is preserved and can be removed manually after verification.
@@ -1,105 +0,0 @@
1
- Bun supports loading configuration options from [`.npmrc`](https://docs.npmjs.com/cli/v10/configuring-npm/npmrc) files, allowing you to reuse existing registry/scope configurations.
2
-
3
- {% callout %}
4
-
5
- **NOTE**: We recommend migrating your `.npmrc` file to Bun's [`bunfig.toml`](https://bun.com/docs/runtime/bunfig) format, as it provides more flexible options and can let you configure Bun-specific options.
6
-
7
- {% /callout %}
8
-
9
- ## Supported options
10
-
11
- ### `registry`: Set the default registry
12
-
13
- The default registry is used to resolve packages, its default value is `npm`'s official registry (`https://registry.npmjs.org/`).
14
-
15
- To change it, you can set the `registry` option in `.npmrc`:
16
-
17
- ```ini
18
- registry=http://localhost:4873/
19
- ```
20
-
21
- The equivalent `bunfig.toml` option is [`install.registry`](https://bun.com/docs/runtime/bunfig#install-registry):
22
-
23
- ```toml
24
- install.registry = "http://localhost:4873/"
25
- ```
26
-
27
- ### `@<scope>:registry`: Set the registry for a specific scope
28
-
29
- Allows you to set the registry for a specific scope:
30
-
31
- ```ini
32
- @myorg:registry=http://localhost:4873/
33
- ```
34
-
35
- The equivalent `bunfig.toml` option is to add a key in [`install.scopes`](https://bun.com/docs/runtime/bunfig#install-registry):
36
-
37
- ```toml
38
- [install.scopes]
39
- myorg = "http://localhost:4873/"
40
- ```
41
-
42
- ### `//<registry_url>/:<key>=<value>`: Configure options for a specific registry
43
-
44
- Allows you to set options for a specific registry:
45
-
46
- ```ini
47
- # set an auth token for the registry
48
- # ${...} is a placeholder for environment variables
49
- //http://localhost:4873/:_authToken=${NPM_TOKEN}
50
-
51
-
52
- # or you could set a username and password
53
- # note that the password is base64 encoded
54
- //http://localhost:4873/:username=myusername
55
-
56
- //http://localhost:4873/:_password=${NPM_PASSWORD}
57
-
58
- # or use _auth, which is your username and password
59
- # combined into a single string, which is then base 64 encoded
60
- //http://localhost:4873/:_auth=${NPM_AUTH}
61
- ```
62
-
63
- The following options are supported:
64
-
65
- - `_authToken`
66
- - `username`
67
- - `_password` (base64 encoded password)
68
- - `_auth` (base64 encoded username:password, e.g. `btoa(username + ":" + password)`)
69
-
70
- The equivalent `bunfig.toml` option is to add a key in [`install.scopes`](https://bun.com/docs/runtime/bunfig#install-registry):
71
-
72
- ```toml
73
- [install.scopes]
74
- myorg = { url = "http://localhost:4873/", username = "myusername", password = "$NPM_PASSWORD" }
75
- ```
76
-
77
- ### `link-workspace-packages`: Control workspace package installation
78
-
79
- Controls how workspace packages are installed when available locally:
80
-
81
- ```ini
82
- link-workspace-packages=true
83
- ```
84
-
85
- The equivalent `bunfig.toml` option is [`install.linkWorkspacePackages`](https://bun.com/docs/runtime/bunfig#install-linkworkspacepackages):
86
-
87
- ```toml
88
- [install]
89
- linkWorkspacePackages = true
90
- ```
91
-
92
- ### `save-exact`: Save exact versions
93
-
94
- Always saves exact versions without the `^` prefix:
95
-
96
- ```ini
97
- save-exact=true
98
- ```
99
-
100
- The equivalent `bunfig.toml` option is [`install.exact`](https://bun.com/docs/runtime/bunfig#install-exact):
101
-
102
- ```toml
103
- [install]
104
- exact = true
105
- ```