更新为什么提示「新版等待中」:发布等待期
你看到有新版本,点了更新,市场却让你再等一等,或者给你一个更旧的版本。这不是出错,是 profile 自己设的一段缓冲时间。
等待期是什么
DSH 用 pnpm 安装插件,而 pnpm 可以拒绝发布不久的版本。这个设置叫 minimumReleaseAge,单位是分钟。较新的 pnpm 默认是 1440 分钟,也就是一天。
目的是防供应链风险。有问题的新版本,通常几小时内就会被发现、被撤下。插件拥有和你一样的权限,刚发布一小时的版本直接装进来,风险不小;多等一天,大部分风险就没了。
你会在市场里看到什么
- 插件上出现「新版等待中」标记,并说明大约还要几小时。
- 如果有更旧的版本已经过了等待期,市场会让你先更新到那个版本,不会什么都不给。
- 如果暂时读不到发布时间(镜像还没同步),市场会直说,稍后再查,不会瞎猜。
dsh web 和桌面端不一样
dsh web 上,更新时 pnpm 拒绝了太新的版本,市场会对这一条命令关掉等待期重试一次,更新就能完成。桌面端用的是应用自带的插件管理器,它不接受这种覆盖,所以市场会先把更新挂起,等版本够旧再装,并告诉你还剩多久。
怎么改
设置在 profile 目录的 pnpm-workspace.yaml 里:
minimumReleaseAge: 1440
minimumReleaseAgeExclude:
- some-plugin@2.0.0
想更严,就把数字调大。想只放行某个版本,把它写进 minimumReleaseAgeExclude;在仍用默认设置的 profile 上安装一个指定版本(name@2.0.0)时,这一行会自动加上。把数字整体改成 0,等于所有插件都不设防,只适合你信得过的一次性命令。
「没有匹配的版本」不一定是这个原因
镜像的同步比 npm 官方源慢。上游已经发布的版本,镜像里可能过一阵才有,pnpm 就会报「没有匹配的版本」。如果不是等待期的问题,换成官方源,或者过一会儿再试,就能解决。