生态集成
JavaScript 生态
vbumpp 如何扫描、读写 JavaScript 生态文件的版本号,并在版本更新后触发包管理器安装
vbumpp 的 JavaScript 生态插件覆盖整个 JS 工具链——Node.js、Deno、Bun、JSR 等。识别到文件后读写版本号;若启用 install,版本更新后自动执行你项目的包管理器安装。
扫描文件
识别以下文件:
| 文件 | 说明 |
|---|---|
package.json | npm / yarn / pnpm / bun / aube / nub 通用配置 |
package-lock.json | npm 锁文件 |
bower.json | Bower 配置 |
component.json | Component 配置 |
jsr.json / jsr.jsonc | JSR(Deno 注册表)配置 |
deno.json / deno.jsonc | Deno 配置 |
根扫描 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.yaml | aube |
bun.lock / bun.lockb | bun |
deno.lock | deno |
nub.lock | nub |
pnpm-lock.yaml / pnpm-workspace.yaml | pnpm |
yarn.lock | yarn |
package-lock.json / npm-shrinkwrap.json | npm |
包管理器声明:package.json 中的两种结构化声明,名称均匹配 npm / yarn / pnpm / bun / deno / nub / aube。
- 顶层
packageManager:取<name>@<version>的 name 部分。 devEngines.packageManager:只接受单个对象形态(如{ "name": "pnpm", "version": ">=10" }),只读name;无效形态跳过。两个声明冲突时以更高优先级的信号为准;不做 Corepack 那样的版本下载与范围校验。