bunx 使用文档

本文介绍了Bunx,一个类似npx的包管理器,它能快速安装并运行本地包,速度比npx快100倍。文章详细讲解了如何在package.json中定义可执行文件、shebang的使用以及如何传递命令行参数给可执行文件。Bunx还支持与Node.js运行时的灵活交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意 — bunx 是 bun x 的别名。安装 bun 时,bunx CLI 将自动安装。

使用 bunx 从 npm 自动安装和运行包。它相当于 npx 或 yarn dlx

bunx cowsay "Hello world!"

⚡️ 速度 — 由于 Bun 的启动时间很快,对于本地安装的软件包,bunx 大约比 npx 快 100 倍

软件包可以在其package.json"bin"字段中声明可执行文件。这些文件称为包可执行文件包二进制文件

// package.json

{
  // ... 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 尊重 shebangs。如果可执行文件标记为 #!/usr/bin/env node 将启动一个node进程来执行该文件。但是,在某些情况下,可能需要使用 Bun 的运行时运行可执行文件,即使可执行文件另有指示。为此,请包含 --bun 标志。

bunx --bun my-cli

--bun 标志必须出现在可执行文件名称之前。名称显示的标志将传递到可执行文件。

bunx --bun my-cli # good
bunx my-cli --bun # bad

要强制 bun 始终与脚本一起使用,请使用 shebang。

#!/usr/bin/env bun

### 关于 Bun 和 Shadcn 初始化速度的分析 在讨论 `bunx --bun shadcn@latest init` 命令执行缓慢的问题时,可以从以下几个方面入手: #### 1. **Bun 的性能特点** Bun 是一种新兴的 JavaScript 运行时环境,以其高性能著称。其设计目标之一就是通过更快的系统调用来提升文件操作效率[^2]。然而,在实际使用中,某些场景可能会受到网络延迟或其他外部因素的影响。 当运行 `bunx --bun shadcn@latest init` 时,主要涉及以下过程: - 下载最新版本的 `shadcn` 包及其依赖项。 - 解析并安装这些包到本地环境中。 - 执行初始化脚本以生成必要的配置文件和模板。 如果上述任一步骤耗时较长,则可能导致整体体验变差。 #### 2. **可能的原因及解决方案** ##### (1)网络连接质量 由于该命令会从远程仓库拉取资源,因此较差的互联网条件可能是主要原因之一。可以通过更换镜像源来改善这一状况。例如设置淘宝 NPM 镜像或其它更接近用户的 CDN 地址作为替代方案。 另外也可以尝试预下载所需的库再手动指定路径完成后续步骤从而减少在线等待时间。 ##### (2)缓存机制未充分利用 确保启用了合适的软件级与操作系统级别的磁盘缓存策略以便重复使用的数据能够被迅速检索出来而不是每次都重新获取新鲜副本。对于 Bun 而言,默认情况下已经内置了一些加速措施比如利用内存映射技术加快读写频率高的小尺寸对象访问速度等等但是仍然建议开发者主动检查自己的工作流程是否存在不必要的冗余请求行为进而针对性调整参数设定达到最佳效果。 ##### (3)硬件资源配置不足 CPU 核心数较少或者可用 RAM 容量有限都会拖累多任务并发处理能力最终反映成整个项目的启动周期延长现象。升级物理设备规格固然是一种直接有效的方法不过在此之前先评估现有架构是否有进一步优化空间同样重要比如说合理分配线程优先级避免因抢占而导致的关键计算单元得不到及时响应等问题发生。 以下是针对以上提到的一些具体改进方法的实际代码演示: ```bash # 设置全局NPM registry为Taobao源 npm config set registry https://registry.npmmirror.com/ # 或者单独为某个特定package定义source location npx env-cmd -f .env.production next build && npx env-cmd -f .env.production next export \ && cd out && rm -rf ../static && mv * .. && cd .. ``` 注意这里只是举例说明如何改变默认behavior并非一定适用于所有case所以需要根据实际情况灵活运用。 --- ### 结合 Webpack Split Chunks 提升构建表现 除了关注基础层面的因素外还可以考虑引入高级别的打包策略进一步缩短冷启动所需的时间长度。例如借助 Webpack 中提供的 `splitChunks` 功能实现按需加载逻辑分离重用度较高的片段形成独立js文件供多次调用共享而不必每次都将全部内容都塞入单一入口点之中这样既减少了初次渲染负担又提高了长期维护便利性[^3]: ```javascript module.exports = { optimization: { splitChunks: { cacheGroups: { commons: { test: /[\\/]node_modules[\\/]/, name: 'vendors', chunks: 'all' } } } } }; ``` 此段配置将第三方依赖提取至名为 "vendors" 的静态资产组内便于浏览器缓存管理同时也降低了主应用体积使得页面切换更加流畅自然。 最后值得注意的是虽然本文重点围绕 Vue 生态圈展开论述但实际上无论采用何种前端框架只要遵循类似的思路都可以取得不错的效果正如文中所描述那样即便是复杂程度很高的后台管理系统也完全可以在短时间内搭建起来并且保持良好的用户体验水平[^4]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值