注意 — bunx
是 bun x
的别名。安装 bun
时,bunx
CLI 将被自动安装。
使用 bunx
从 npm
自动安装并运行包。它是 Bun 对应的 npx
或 yarn dlx
。
bunx cowsay "Hello world!"
⚡️ 速度 — 借助 Bun 快速的启动时间,对于本地安装的包,bunx
比 npx
快大约 100 倍。
包可以在其 package.json
的 "bin"
字段中声明可执行文件。这些被称为包可执行文件或包二进制文件。
{
// ... other fields
"name": "my-cli",
"bin": {
"my-cli": "dist/index.js"
}
}
这些可执行文件通常是简单的 JavaScript 文件,并带有 shebang 行,以指示应使用哪个程序来执行它们。以下文件表明它应该使用 node
执行。
#!/usr/bin/env node
console.log("Hello world!");
可以使用 bunx
运行这些可执行文件,
bunx my-cli
与 npx
一样,bunx
会先检查本地安装的包,然后回退到从 npm
自动安装包。安装的包将存储在 Bun 的全局缓存中以供将来使用。
参数和标志
要将其他命令行标志和参数传递给可执行文件,请将它们放在可执行名称之后。
bunx my-cli --foo bar
Shebangs
默认情况下,Bun 会尊重 shebang。如果可执行文件标记为 #!/usr/bin/env node
,Bun 将启动一个 node
进程来执行该文件。但是,在某些情况下,即使可执行文件另有指示,也可能希望使用 Bun 的运行时来运行可执行文件。为此,请包含 --bun
标志。
bunx --bun my-cli
--bun
标志必须出现在可执行名称之前。出现在名称之后的标志将传递给可执行文件。
bunx --bun my-cli # good
bunx my-cli --bun # bad
包标志
--package <pkg>
或 -p <pkg>
- 从特定包运行二进制文件。当二进制名称与包名称不同时很有用
bunx -p renovate renovate-config-validator
bunx --package @angular/cli ng
要强制 bun 始终与脚本一起使用,请使用 shebang。
#!/usr/bin/env bun