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

如何在Monorepo中用release-please-action更新package.json版本?

解决release-please-action处理Monorepo中JSON文件版本递增的问题

问题根源

你用>符号定义多行字符串时,YAML会将所有换行转换为空格,导致整个JSON数组被当成单个字符串[ api/pyproject.toml, api/src/app.py, { "type": "json", ... } ],release-please会把开头的[误认为是文件名,从而抛出file [ did not exist错误。

解决方案

1. 使用YAML原生数组格式配置extra-files

直接用YAML的数组语法替代JSON数组,YAML解析器能正确识别每个元素:

jobs:
  release-please:
    runs-on: ubuntu-latest
    steps:
      - uses: google-github-actions/release-please-action@v3
        id: release
        with:
          release-type: simple
          extra-files:
            - api/pyproject.toml
            - api/src/app.py
            - type: json
              path: web/package.json
              jsonpath: "$.version"

这种写法不需要嵌套JSON,YAML会自动将其解析为包含字符串和对象的数组,release-please能正确识别每个文件的配置规则。

2. 使用独立配置文件避免YAML格式问题

如果还是遇到格式解析问题,可在项目根目录创建.release-please-config.json文件,将所有配置集中存放:

{
  "release-type": "simple",
  "extra-files": [
    "api/pyproject.toml",
    "api/src/app.py",
    {
      "type": "json",
      "path": "web/package.json",
      "jsonpath": "$.version"
    }
  ]
}

然后简化GitHub Action配置,让它自动读取这个配置文件:

jobs:
  release-please:
    runs-on: ubuntu-latest
    steps:
      - uses: google-github-actions/release-please-action@v3
        id: release

3. 验证JSONPath正确性

确保$.version能精准定位到web/package.json中的版本字段,示例package.json结构:

{
  "name": "web-app",
  "version": "1.0.0",
  // 其他字段...
}

如果版本字段在嵌套结构中,需调整JSONPath(比如$.package.version)。

4. 升级action版本(可选)

如果当前v3版本存在已知解析bug,可尝试升级到最新稳定版(如@v4),确保兼容该配置方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:07:45