当前位置: 首页 > news >正文

Bun v1.2.19发布,node_modules隔离,sql比node快6倍

大家好,我是农村程序员,独立开发者,行业观察员,前端之虎陈随易。我会在这里分享关于 独立开发编程技术思考感悟 等内容,欢迎关注。

技术群与交朋友请在个人网站联系我,网站 1️⃣:https://chensuiyi.me,网站 2️⃣:https://me.yicode.tech。

如果你觉得本文有用,一键三连 (点赞评论转发),就是对我最大的支持~


node_modules 隔离

这是本次更新最令人兴奋的功能了,请看上图,左侧是 v1.2.18 的 node_modules 结构,所有依赖都平铺到一起。右侧是 v1.2.19 的 node_modules 结构,在使用 workspaces 管理的 monorepo 多项目仓库可以拥有自己的 node_modules 了。

也就是说,如果你的项目使用了一个依赖的不同版本,那么现在可以多版本共存了。也正是因为这个功能,不少人表示,是时候进入到 Bun 的世界了。

但,这个功能不是默认启用的,使用命令 bun install --linker=isolated 来手动指定安装方式为隔离模式。更好的方法则是在项目根目录创建 bunfig.toml 文件,配置如下:

[install]
linker = "isolated"

这样直接运行 bun install,无需指定 --linker=isolated 参数。

Bun.sql 速度现在提高了 5 倍

import { SQL } from 'bun:sql';const db = new SQL('postgres://user:pass@host:port/db');// Bun 自动将这些查询流水线化,
// 将它们发送到服务器,而无需等待每个查询的单独响应。
const queries = [];
for (let i = 0; i < 100; i++) {// .execute() 用于即发即弃查询queries.push(db`SELECT ${i}`.execute());
}// 等待所有结果
const results = await Promise.all(queries);
console.log(results.length); // 100await db.end();

Bun 的内置 PostgreSQL 客户端 Bun.sql 现在可以自动对查询进行流水线化,从而显著提升性能。

流水线化允许将多个查询发送到服务器,而无需等待前一个查询的响应,从而减少网络延迟的影响。

这在并行执行许多小型独立查询时尤其有效 (例如,一个 API 服务器同时处理多个并发请求)。

此更改默认启用,无需更改代码,在基准测试中,对于高并发工作负载,Bun.sql 现在比在 Bun 中运行的 postgres 包快约 3.4倍,比在 Node.js 中运行的 postgres 快约 6倍

手动选择依赖更新

更新依赖的时候,执行 bun update --interactive,简写 bun update -i,即可列出所有待更新依赖,可以手动选择更新哪些依赖。

这个功能跟 npm-check-updates 和 antfu 的 taze 类似,不过能被 bun 内置,还是更方便的。

新增 bun pm pkg 命令

# 获取单个属性
bun pm pkg get name
# 获取多个属性
bun pm pkg get name version
# 设置单个属性
bun pm pkg set name="my-package"
# 设置多个属性
bun pm pkg set scripts.test="jest" version=2.0.0
# 删除单个属性
bun pm pkg delete description
# 删除嵌套属性
bun pm pkg delete scripts.test contributors[0]

虽然好像大部分时候用不上,但也非常实用,有时候需要快速修改属性,就不需要创建单独的脚本文件,或者引入第三方包了。

在 workspaces 中更快的安装速度

修复了导致安装过程中多次重新评估工作区包的错误,这使得使用 Bun 工作区的 Monorepos 的安装速度更快、更可靠。

{"dependencies": {"react": "18.2.0"},"devDependencies": {"react": "18.3.0"},"peerDependencies": {"react": "18.2.1"}
}

当多个依赖组都有相同的依赖时,目前已调整解析顺序为 devDependencies > optionalDependencies > dependencies > peerDependencies

bun pm pack 增加 --quiet 参数

bun pm pack 命令现在支持 --quiet 参数,使用 --quiet 标志后,它会抑制所有详细输出,仅将生成的 tarball 文件名打印到 stdout。

这对于需要捕获文件名的脚本和自动化工作流程尤其有用。

$ bun pm pack
bun pack v1.2.18packed 131B package.json
packed 40B index.jsmy-package-1.0.0.tgzTotal files: 2
Shasum: f2451d6eb1e818f500a791d9aace80b394258a90
Unpacked size: 171B
Packed size: 249B

👆 这是不加 --quiet 参数的输出。

$ bun pm pack --quiet
> my-package-1.0.0.tgz

👆 这是加上 --quiet 参数的输出。

TARBALL=$(bun pm pack --quiet)
echo "Created: $TARBALL"
> Created: my-package-1.0.0.tgz

👆 具体应用场景和效果如上。

读取 .npmrc 中的 link-workspace-packagessave-exact

bun installbun add 现在会读取并应用项目 .npmrc 文件中的 link-workspace-packagessave-exact 设置,这允许更精细地控制依赖项管理,与其他包管理器保持一致。

# ./.npmrc
save-exact=true

例如,要始终保存精确版本而不是使用 ^ 前缀,可以设置 save-exact=true

{"dependencies": {"is-odd"
http://www.dtcms.com/a/290070.html

相关文章:

  • MySQL:表的增删查改
  • 【跨国数仓迁移最佳实践2】MaxCompute SQL执行引擎对复杂类型处理全面重构,保障客户从BigQuery平滑迁移
  • VUE如何设置语音
  • 【实践篇】基于.venv 的 ComfyUI 环境同配置迁移:pyvenv.cfg 路径修改法
  • leetcode-sql-627变更性别
  • 植物根茎切片图像处理与分析系统开发
  • 【大模型】结构化提示词:让AI高效完成复杂任务的“编程语言”
  • 虚拟机扩展磁盘容量后扩展分区大小
  • 部署 Zabbix 企业级分布式监控
  • 【图像处理基石】什么是相机的内外参数?
  • 在Windows Server 2012 R2中安装与配置IIS服务并部署mssql靶机教程
  • 在Web API 开发中践行Security by Default原则
  • 【操作篇】群晖NAS用root权限直接访问系统分区文件
  • 4x4矩阵教程
  • channel_up和lane_up
  • OpenLayers 入门指南【三】:API概要
  • MetaGPT源码剖析(三):多智能体系统的 “智能角色“ 核心实现——Role类
  • GoLang教程005:switch分支
  • wordle game(猜词游戏)小demo【react + ts】
  • 子网划分核心原理 (网络原理1)
  • 配置 Nginx 反向代理
  • 微信小程序服务端快速对接指南(java版)
  • 本地生活服务 app 同城信息发布系统搭建
  • 文件的写出操作|文件的追加写入操作|文件操作的综合案例
  • BERT 的“池化策略”
  • 基于SpringBoot和leaflet-timeline-slider的历史叙事GIS展示-以哪吒2的海外国家上映安排为例
  • 技能学习PostgreSQL中级专家
  • 云原生安全工具:数字基础设施的免疫长城
  • 解码视觉体验:视频分辨率、屏幕尺寸、屏幕分辨率与观看距离的科学关系
  • 【Linux庖丁解牛】— 线程控制!