Release:https://github.com/pnpm/pnpm/releases/tag/v7.10.0
RFC - Time-based resolution mode:
rfcs/0002-time-based-resolution-mode.md at main · pnpm/rfcs
Docs:https://github.com/pnpm/pnpm.github.io/blob/main/docs/npmrc.md#resolution-mode
# .npmrc
resolution-mode=time-based
依赖关系将按照以下方式解析:
foo@^1.1.0,则安装 1.1.0 版本。~ ^ 等 prefix 将失效。只有直接依赖发生变更才会更新子依赖(间接依赖)。
子依赖(间接依赖)的发布时间不能比直接依赖新。
例如,A 依赖 B@^3.1.0,A 发布了 1.0.0 版本,此时版本 B 是 3.1.0。后来 B 发布了新版本(3.2.0)
A 时,简介依赖 B 则会安装 3.2.0 版本。如果 B 发了一个有问题的版本,安装 A 的业务就挂了。B 时,只能安装 [email protected] 发布之前的 B 发布的 3.1.0 版本。
版本发布信息在包元数据的 time 字段中。
例如:[email protected] 发布于 "2022-08-14T01:23:41.730Z",在这个时间上加一些 delta 最后得到发布时间 T。
delta 的存在是因为某些 monorepos 发布顺序是随机的,所以某些依赖包会在它所依赖的包发布之后发布