You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rush.js时,未发布依赖更新后如何触发已发布包更新?

Rush.js 单体仓库依赖更新识别与变更文件生成方案

问题背景

我使用Rush.js搭配npm管理单体仓库,其中Package A为私有发布包,Package B为未发布包。Package B是Package A的依赖,发布前会通过Rollup将二者编译为单个文件,Package A的依赖配置如下:

{
  ...
  "dependencies": {
    "@my-org/package-b": "*"
  },
  ...
}

当更新Package B后,需要让Rush识别到该依赖已更新,从而判定Package A实际已变更,并解决两个具体问题:是否有对应配置选项、能否强制生成变更文件。


1. 是否存在对应的配置选项?

有两种核心配置方式可以让Rush识别Package B的变更对Package A的影响:

  • 改用Workspace协议声明依赖:将Package A的package.json中依赖改为"@my-org/package-b": "workspace:*",Rush会自动关联本地Package B的变更,在执行rush change或rush build时识别到Package A的依赖更新。
  • 配置循环依赖关联:在rush.json的projects数组中,给Package A添加cyclicDependencyProjects字段,指定关联的Package B:
    {
      "projects": [
        {
          "packageName": "@my-org/package-a",
          "projectFolder": "packages/package-a",
          "cyclicDependencyProjects": ["@my-org/package-b"]
        },
        ...
      ]
    }
    
    这样当Package B有变更时,Rush会将Package A标记为受影响的项目,后续的构建、变更检测流程会自动处理。

2. 能否在Package A文件未变动时,强制rush change为其生成变更文件?

可以,直接使用rush change的强制指定包参数:

rush change -f @my-org/package-a

执行该命令后,即使Package A的本地文件没有修改,Rush也会弹出交互窗口,让你为Package A填写变更说明并生成对应的变更文件。如果需要自动化处理,也可以结合脚本,在Package B的变更提交后自动触发该命令。


内容的提问来源于stack exchange,提问作者Tom Benyon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:16:03