告别npx:用Bun的bunx一键运行任何CLI工具的完整入门指南
【免费下载链接】bunIncredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one项目地址: https://gitcode.com/GitHub_Trending/bu/bun
bunx 是 Bun 内置的一键运行 npm 包 CLI 命令的工具,相当于 npx 和 yarn dlx,但速度最快可达 100 倍以上。Bun 是一个极速的 JavaScript 运行时,集打包器、测试运行器和包管理器于一体,而 bunx 就是它"即装即用"的秘密武器——无需提前安装,一条命令即可运行任何 npm 上的命令行工具。
为什么需要 bunx?先认识 npx 的痛点 🐢
用过 npx 的同学都知道它的经典体验:
- 第一次运行某个工具时,需要临时下载安装,等待时间不可控
- 本地已安装的工具,npx 也要先解析一遍依赖树才能启动
- 启动慢是常态,尤其是大依赖的 CLI 工具
而 Bun 官方给出的数据是:bunx 对本地已安装包,比 npx 快大约 100 倍。原因很简单——Bun 的启动时间本身极短(参考下图的对比图,Bun 打包 0.17s,Webpack 5 要 38s):
bunx 在 Bun 安装时自动随附,不需要额外装任何东西。它是bun x的别名,两者完全等价。
30秒上手:bunx 第一条命令 🚀
安装 Bun 后,第一条 bunx 命令就是著名的 cowsay 玩具:
bunx cowsay "Hello world!"cowsay 是一个打印"会说话的牛"的小工具。如果它还没装过,bunx 会自动从 npm 安装到 Bun 的全局缓存,然后再执行——整个过程无感,下次再运行则直接命中缓存,秒级启动。
它的运行逻辑和 npx 一致:
- 先检查本地 node_modules里有没有这个工具
- 没有就从 npm 自动下载
- 存进 Bun 的全局缓存(位于
~/.bun/install/cache),供以后复用
相关文档可以在 docs/pm/bunx.mdx 中找到,缓存机制的完整说明见 docs/pm/global-cache.mdx。
日常实用:这些场景直接替代 npx ✅
场景一:跑脚手架工具
不用全局安装,临时用一次:
bunx create-vite my-app bunx --package @angular/cli ng场景二:指定包名运行工具(-p 参数)
当"工具名"和"包名"不一样时(比如@angular/cli包提供的是ng命令),用-p或--package指定包:
bunx -p renovate renovate-config-validator场景三:传递参数给被运行的工具
参数放在工具名后面,会原样透传:
bunx my-cli --foo bar进阶技巧:用 --bun 标志加速 node 脚本 ⚡
很多 CLI 工具的package.json里通过"bin"字段声明可执行文件,文件头部常带#!/usr/bin/env node的 shebang。默认情况下,Bun 会尊重 shebang、另起一个 node 进程来执行它——这就浪费了 Bun 的速度优势。
加--bun标志可强制用 Bun 运行时执行:
bunx --bun my-cli⚠️关键细节:--bun必须放在工具名前面才有效,放后面会被当作参数透传出去:
bunx --bun my-cli # ✅ 正确 bunx my-cli --bun # ❌ 错误,--bun 被当作工具参数常见问题 FAQ ❓
| 问题 | 答案 |
|---|---|
| bunx 和 bun x 有什么区别? | 没有区别,bunx 只是bun x的别名 |
| 需要单独安装 bunx 吗? | 不需要,安装 Bun 时自动附带 |
| 下载的工具存在哪里? | Bun 全局缓存~/.bun/install/cache |
| 支持私有包 / 指定版本吗? | 支持,如bunx cowsay@1.0.0运行指定版本 |
| 和 yarn dlx 哪个快? | bunx 基于 Bun 极速运行时,通常明显更快 |
快速回顾:5 条必须记住的命令清单 📋
bunx cowsay "hi"—— 一键运行任意 npm CLIbunx -p <包名> <工具名>—— 包名与工具名不同时指定包bunx <工具名> --参数—— 工具名后传参,原样透传bunx --bun <工具名>—— 强制 Bun 运行时执行(更快)bun --version—— 确认已安装 Bun,bunx 即随之可用
结语
bunx 让"临时用一下某个 CLI 工具"这件事变得和敲ls一样轻快:不污染全局环境、命中缓存后近乎零等待、还能借 Bun 运行时再榨出一截性能。如果你还在为 npx 的等待时间皱眉,不妨现在就试试bunx cowsay—— 这大概是你今天学到的最短的一个新命令。
更多包管理知识可参考 docs/pm/ 目录下的安装、更新、审计等完整文档;想深入源码实现,可浏览 src/install/ 目录中 Bun 包管理器的 Rust 实现。
【免费下载链接】bunIncredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one项目地址: https://gitcode.com/GitHub_Trending/bu/bun
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考