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

如何配置Manifest驱动的Release-Please更新Monorepo依赖及package-lock.json

在Monorepo中用Release-Please同步更新依赖包及lock文件

可以通过配置实现需求,核心是启用Release-Please的依赖更新功能,并补充lock文件的自动更新逻辑,具体步骤如下:

1. 配置Release-Please跟踪所有相关包

在根目录的release-please-config.json中,将被更新的工具包和引用它的启动项目都加入packages配置,并开启依赖更新:

{
  "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
  "manifest-file": ".release-please-manifest.json",
  "release-type": "node",
  "dependency-updates": true,
  "packages": {
    "packages/hello-world-util": {},
    "starters/nestjs-startup-app": {}
  }
}

同时确保.release-please-manifest.json包含所有这些包的当前版本:

{
  "packages/hello-world-util": "1.0.0",
  "starters/nestjs-startup-app": "1.0.0"
}

2. 确保子项目依赖声明正确

在starters/nestjs-startup-app/package.json中,正确声明对内部包的依赖,包名需与packages/hello-world-util/package.json中的name字段完全一致:

{
  "dependencies": {
    "@your-org/hello-world-util": "^1.0.0"
  }
}

3. 自动更新根目录package-lock.json

Release-Please不会自动运行npm install更新lock文件,需通过以下方式之一实现:

方法一:使用Release-Please的post-upgrade脚本

  1. 在根目录创建scripts/update-lockfile.sh脚本,赋予执行权限:
#!/bin/bash
set -e
npm install
git add package-lock.json
  1. 在release-please-config.json中指定该脚本:
{
  // 保留原有配置
  "post-upgrade": "./scripts/update-lockfile.sh"
}

Release-Please在更新所有package.json版本后,会自动执行该脚本,将lock文件的变更纳入同一个PR。

方法二:在GitHub Action Workflow中添加步骤

修改Release-Please的Action配置,在PR创建后更新lock文件并推送:

jobs:
  release-please:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - uses: google-github-actions/release-please-action@v4
        id: release
        with:
          command: manifest
      - if: steps.release.outputs.pr_created == 'true'
        run: |
          npm install
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"
          git add package-lock.json
          git commit -m "Update package-lock.json to match dependency versions"
          git push

4. 验证效果

提交配置后,当packages/hello-world-util有符合Release-Please规则的变更时,工具会生成包含以下内容的PR:

  • 更新packages/hello-world-util/package.json的版本号
  • 更新starters/nestjs-startup-app/package.json中对应依赖的版本号
  • 更新根目录的package-lock.json

合并该PR后,即可直接执行npm publish,不会因依赖版本不匹配导致构建失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:40:20