bunx
运行 npm 包
使用 bunx 来自动安装并运行来自 npm 的包。它是 Bun 版本的 npx 或 yarn dlx。
bunx cowsay "Hello world!"
包可以在它们的 package.json 文件中的 "bin" 字段声明可执行文件。这些被称为 包可执行文件 或 包二进制文件。
{
// ... 其他字段
"name": "my-cli",
"bin": {
"my-cli": "dist/index.js"
}
}
这些可执行文件通常是带有 shebang 行的纯 JavaScript 文件,其中会指定用于运行它们的程序。以下文件使用 node 运行。
#!/usr/bin/env node
console.log("Hello world!");
使用 bunx 运行这些可执行文件:
bunx my-cli
与 npx 一样,bunx 会先检查是否已在本地安装该包,然后再回退到从 npm 自动安装。bunx 会将已安装的包存储在 Bun 的全局缓存中,以供日后使用。
参数和标志
要向可执行文件传递额外的命令行标志和参数,请把它们放在可执行文件名之后。
bunx my-cli --foo bar
Shebang 行
默认情况下,Bun 会遵循 shebang。如果可执行文件标记为 #!/usr/bin/env node,Bun 会启动一个 node 进程来执行该文件。若要改用 Bun 的运行时执行可执行文件,请传入 --bun 标志。
bunx --bun my-cli
--bun 标志必须出现在可执行文件名称_之前_。bunx 会将出现在名称_之后_的标志传递给可执行文件。
bunx --bun my-cli # 正确
bunx my-cli --bun # 错误
软件包标志
--package <pkg> 或 -p <pkg> - 从指定的软件包运行二进制文件。当二进制文件名与软件包名称不同时非常有用:
bunx -p renovate renovate-config-validator
bunx --package @angular/cli ng
要强制脚本始终使用 Bun 运行,请为其指定一个 bun shebang。
#!/usr/bin/env bun
使用方法
bunx [flags] <package>[@version] [flags and arguments for the package]
执行 npm 包可执行文件(CLI)。如果该包未安装在 node_modules 中,Bun 会将其安装到全局共享缓存中。
参数
--bunboolean强制命令使用 Bun 运行而非 Node.js,即使可执行文件包含 Node 的 shebang(#!/usr/bin/env node)
-p, --packagestring当二进制名称与包名不同时,指定要安装的包
--no-installboolean如果包尚未安装,则跳过安装
--verboseboolean安装过程中启用详细输出
--silentboolean安装过程中抑制输出
示例
# 运行 Prisma 迁移
bunx prisma migrate
# 使用 Prettier 格式化文件
bunx prettier foo.js
# 运行指定版本的包
bunx uglify-js@3.14.0 app.js
# 当二进制名称与包名不同时,使用 --package 指定包
bunx -p @angular/cli ng new my-app
# 强制使用 Bun 运行而非 Node.js,即使可执行文件包含 Node shebang
bunx --bun vite dev foo.js