vbumpp logovbumpp
生态集成

JavaScript 生态

vbumpp 如何扫描、读写 JavaScript 生态文件的版本号,并在版本更新后触发包管理器安装

vbumpp 的 JavaScript 生态插件覆盖整个 JS 工具链——Node.js、Deno、Bun、JSR 等。识别到文件后读写版本号;若启用 install,版本更新后自动执行你项目的包管理器安装。

扫描文件

识别以下文件:

文件说明
package.jsonnpm / yarn / pnpm / bun / aube / nub 通用配置
package-lock.jsonnpm 锁文件
bower.jsonBower 配置
component.jsonComponent 配置
jsr.json / jsr.jsoncJSR(Deno 注册表)配置
deno.json / deno.jsoncDeno 配置

根扫描 vs 递归

  • 默认(根扫描):在项目根目录探测上表文件。
  • 递归(recursive = true-r:升级为 **/<basename> 整树收集,适合 monorepo 一次同步所有子包。

读写版本号

读取

版本来源按你提供的 files 顺序探测;files 为空时自动探测默认文件。识别到 JS 文件后取顶层 version 字符串字段;缺失或为 null 时跳过该文件。

写入

  • version 已是新值 → 跳过,不重写文件。
  • version 缺失或为 null → 跳过。
  • package-lock.json 额外更新 packages[""].version(根包条目),改动依赖包的版本。

后续安装规则

仅在 install = true 且至少有一个文件实际被更新时触发;无文件更新则不执行。

触发条件动作
有文件被更新(含文本模板文件)执行检测到的包管理器 <pm> install
混合 JS + Cargo 项目先 JS、后 Cargo(固定顺序,与 files 顺序无关)
没有任何文件更新不执行

包管理器检测

从当前目录逐级向上查找,最近目录先命中;每级目录内按 lockfile → packageManager 字段 → devEngines.packageManager 声明的顺序检测。检测结果只用于决定执行哪个包管理器的 install 命令,不影响上文的版本文件扫描。

lockfile 顺序(更具体者在前):

锁文件包管理器
aube-lock.yaml / aube-workspace.yamlaube
bun.lock / bun.lockbbun
deno.lockdeno
nub.locknub
pnpm-lock.yaml / pnpm-workspace.yamlpnpm
yarn.lockyarn
package-lock.json / npm-shrinkwrap.jsonnpm

包管理器声明package.json 中的两种结构化声明,名称均匹配 npm / yarn / pnpm / bun / deno / nub / aube

  • 顶层 packageManager:取 <name>@<version> 的 name 部分。
  • devEngines.packageManager:只接受单个对象形态(如 { "name": "pnpm", "version": ">=10" }),只读 name;无效形态跳过。两个声明冲突时以更高优先级的信号为准;不做 Corepack 那样的版本下载与范围校验。

On this page