| 命令 | 时间 |
|---|---|
bun hello.js | 5.2ms |
node hello.js | 25.1ms |
运行一个文件
使用bun run 来执行源文件。
terminal
terminal
run 关键字并使用”裸露”命令;它的行为完全相同。
terminal
--watch
要在监视模式下运行文件,请使用 --watch 标志。
terminal
使用 出现在命令末尾的标志将被忽略并传递给
bun run 时,将 Bun 标志(如 --watch)放在 bun 之后。"dev" 脚本本身。运行 package.json 脚本
对比
npm run <script> 或 yarn <script>package.json 可以定义许多命名的 "scripts",它们对应于 shell 命令。
package.json
bun run <script> 来执行这些脚本。
terminal
bash、sh、zsh。在 Windows 上,它使用 bun shell 来支持 bash 类语法和许多常用命令。
⚡️ Linux 上
npm run 的启动时间约为 170ms;而 Bun 是 6ms。bun <script> 运行,但是如果有同名的内置 bun 命令,内置命令优先。在这种情况下,使用更明确的 bun run <script> 命令来执行您的包脚本。
terminal
bun run。
terminal
preclean 和 postclean,bun run clean 将执行它们。如果 pre<script> 失败,Bun 将不会执行脚本本身。
--bun
package.json 脚本通常引用本地安装的 CLI,如 vite 或 next。这些 CLI 通常是用 shebang 标记的 JavaScript 文件,以表明它们应该用 node 执行。
node 执行脚本。但是,您可以使用 --bun 标志覆盖此行为。对于基于 Node.js 的 CLI,这将使用 Bun 而不是 Node.js 运行 CLI。
terminal
过滤
在包含多个包的单一代码库中,您可以使用--filter 参数在多个包中同时执行脚本。
使用 bun run --filter <name_pattern> <script> 在所有名称匹配 <name_pattern> 的包中执行 <script>。
例如,如果您有包含名为 foo、bar 和 baz 的包的子目录,运行
terminal
bar 和 baz 中执行 <script>,但不在 foo 中执行。
在 filter 的文档页面中找到更多详细信息。
bun run - 从标准输入管道传输代码
bun run - 让您可以从 stdin 读取 JavaScript、TypeScript、TSX 或 JSX 并执行它,而无需先写入临时文件。
terminal
bun run - 将文件重定向到 Bun。例如,要将 .js 文件作为 .ts 文件运行:
terminal
bun run - 时,所有代码都被视为具有 JSX 支持的 TypeScript。
bun run --console-depth
使用 --console-depth 标志控制控制台输出中对象检查的深度。
terminal
console.log() 输出中显示嵌套对象的深度。默认深度为 2。较高的值显示更多嵌套属性,但对于复杂对象可能产生冗长的输出。
bun run --smol
在内存受限的环境中,使用 --smol 标志以牺牲性能为代价减少内存使用。
terminal
--smol 标志,所以这主要用于希望让堆大小增长更缓慢的情况。
解析顺序
绝对路径和以./ 或 .\ 开头的路径总是作为源文件执行。除非使用 bun run,运行具有允许扩展名的文件会优先于 package.json 脚本。
当有同名的 package.json 脚本和文件时,bun run 优先处理 package.json 脚本。完整的解析顺序是:
- package.json 脚本,例如
bun run build - 源文件,例如
bun run src/main.js - 来自项目包的二进制文件,例如
bun add eslint && bun run eslint - (仅
bun run)系统命令,例如bun run ls
CLI 用法
通用执行选项
不打印脚本命令
如果入口点不存在,则不报错退出
将参数作为脚本求值。别名:
-e将参数作为脚本求值并打印结果。别名:
-p显示此菜单并退出。别名:
-h工作区管理
使用 —filter 时显示的脚本输出行数(默认:10)。设置为 0 以显示所有行
在所有匹配模式的工作区包中运行脚本。别名:
-F在所有工作区包中运行脚本(来自
package.json 中的 workspaces 字段)运行时和进程控制
强制脚本或包使用 Bun 的运行时而不是 Node.js(通过符号链接 node)。别名:
-b控制用于
package.json 脚本的 shell。支持 bun 或 system使用更少的内存,但更频繁地运行垃圾回收
在全局对象上暴露
gc()。对 Bun.gc() 没有效果抑制所有自定义弃用报告
确定弃用警告是否导致错误
设置进程标题
布尔值,强制
Buffer.allocUnsafe(size) 被零填充如果调用
process.dlopen,则抛出错误,并禁用导出条件 node-addons以下之一:
strict、throw、warn、none 或
warn-with-error-code设置
console.log 对象检查的默认深度(默认:2)开发工作流程
在文件更改时自动重启进程
在 Bun 运行时、测试运行器或打包器中启用自动重载
启用 —hot 或 —watch 时,禁用重新加载时清除终端屏幕
调试
激活 Bun 的调试器
激活 Bun 的调试器,等待连接后再执行
激活 Bun 的调试器,在代码第一行设置断点并等待
依赖和模块解析
在其他模块加载之前导入一个模块。别名:
-r—preload 的别名,用于 Node.js 兼容性
—preload 的别名,用于 Node.js 兼容性
在 Bun 运行时中禁用自动安装
配置自动安装行为。以下之一:
auto(默认,当没有 node_modules 时自动安装)、
fallback(仅缺失包)、force(总是)在执行期间自动安装依赖。相当于 —install=fallback
在 Bun 运行时中跳过包的陈旧检查,并从磁盘解析
在 Bun 运行时中使用最新的匹配版本的包,始终检查 npm
传递自定义条件进行解析
在
package.json 中查找的主要字段。默认为 —target 依赖解析文件时保留符号链接
解析主入口点时保留符号链接
默认值:
.tsx,.ts,.jsx,.js,.json转译和语言特性
指定自定义
tsconfig.json。默认 $cwd/tsconfig.json解析时替换 K:V,例如:
—define process.env.NODE_ENV:“development”。值被解析为
JSON。别名:-d删除函数调用,例如:
—drop=console 删除所有 console.* 调用使用
.ext:loader 解析文件,例如:—loader .js:jsx。有效加载器:js、
jsx、ts、tsx、json、toml、text、
file、wasm、napi。别名:-l在打包器、转译器和运行时中禁用宏的执行
更改使用经典 JSX 运行时编译 JSX 元素时调用的函数
更改编译 JSX 片段时调用的函数
声明用于导入 jsx 和 jsxs 工厂函数的模块说明符。默认:
reactautomatic(默认)或 classic将 JSX 元素视为具有副作用(禁用纯注释)
忽略树摇注释,如
@PURE网络和安全
为
Bun.serve 设置默认端口在代码加载时预连接到 URL
设置 HTTP 头的最大大小(以字节为单位)。默认值为 16KiB
设置 DNS 查找结果的默认顺序。有效顺序:
verbatim(默认)、ipv4first、
ipv6first使用系统的受信任证书颁发机构
使用 OpenSSL 的默认 CA 存储
使用捆绑的 CA 存储
启动时预连接到
$REDIS_URL启动时预连接到 PostgreSQL
设置 HTTP 请求的默认 User-Agent 头
全局配置和上下文
从指定文件加载环境变量
从中解析文件和入口点的绝对路径。这只是更改进程的 cwd
指定 Bun 配置文件路径。默认
$cwd/bunfig.toml。别名:-c