Renovate: группировка зависимостей в одном мерж-реквесте

Я хочу сгруппировать все связанные зависимости в один запрос на слияние (MR), как в приведенных ниже примерах:

В одном MR (все начинаются с @angular / кроме @angular / cli):

          "@angular/animations": "10.2.5",
    "@angular/cdk": "10.2.5",
    "@angular/common": "10.2.5",
    "@angular/compiler": "10.2.5",
    "@angular/core": "10.2.5",
    "@angular/forms": "10.2.5",
    "@angular/localize": "10.2.5",
    "@angular/platform-browser": "10.2.5",
    "@angular/platform-browser-dynamic": "10.2.5",
    "@angular/router": "10.2.5",
    "@angular/compiler-cli": "10.2.5"

В одном MR:

          "@ngrx/effects": "10.1.2",
    "@ngrx/router-store": "10.1.2",
    "@ngrx/store": "10.1.2",
    "@ngrx/store-devtools": "10.1.2",
    "@ngrx/schematics": "10.1.2",

В одном MR:

          "ag-grid-angular": "24.1.0",
    "ag-grid-community": "24.1.0"

В одном MR:

          "@angular-eslint/builder": "1.2.0",
    "@angular-eslint/eslint-plugin": "1.2.0",
    "@angular-eslint/eslint-plugin-template": "1.2.0",
    "@angular-eslint/schematics": "1.2.0",
    "@angular-eslint/template-parser": "1.2.0",

Если у меня есть этот package.json:

      "dependencies": {
    "@angular/animations": "10.2.5",
    "@angular/cdk": "10.2.5",
    "@angular/common": "10.2.5",
    "@angular/compiler": "10.2.5",
    "@angular/core": "10.2.5",
    "@angular/forms": "10.2.5",
    "@angular/localize": "10.2.5",
    "@angular/platform-browser": "10.2.5",
    "@angular/platform-browser-dynamic": "10.2.5",
    "@angular/router": "10.2.5",
    "@ng-bootstrap/ng-bootstrap": "7.0.0",
    "@ng-select/ng-select": "5.1.0",
    "@ngrx/effects": "10.1.2",
    "@ngrx/router-store": "10.1.2",
    "@ngrx/store": "10.1.2",
    "@ngrx/store-devtools": "10.1.2",
    "@ngx-translate/core": "13.0.0",
    "@ngx-translate/http-loader": "6.0.0",
    "ag-grid-angular": "24.1.0",
    "ag-grid-community": "24.1.0",
    "bootstrap": "4.6.0",
    "crypto-js": "4.0.0",
    "fbc-iam-angular": "2.0.0",
    "ngx-toastr": "13.2.1",
    "rxjs": "6.6.7",
    "tslib": "2.1.0",
    "zone.js": "0.11.4"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "0.1002.1",
    "@angular-eslint/builder": "1.2.0",
    "@angular-eslint/eslint-plugin": "1.2.0",
    "@angular-eslint/eslint-plugin-template": "1.2.0",
    "@angular-eslint/schematics": "1.2.0",
    "@angular-eslint/template-parser": "1.2.0",
    "@angular/cli": "10.2.3",
    "@angular/compiler-cli": "10.2.5",
    "@foundation/npm-oss-clearing": "2.2.0",
    "@ngrx/schematics": "10.1.2",
    "@types/jest": "24.9.1",
    "@typescript-eslint/eslint-plugin": "4.18.0",
    "@typescript-eslint/parser": "4.18.0",
    "eslint": "7.22.0",
    "eslint-config-airbnb-typescript": "12.3.1",
    "eslint-plugin-cypress": "2.11.2",
    "eslint-plugin-header": "3.1.1",
    "eslint-plugin-import": "2.22.1",
    "eslint-plugin-jest": "24.3.6",
    "eslint-plugin-promise": "4.3.1",
    "eslint-plugin-rxjs": "3.1.3",
    "eslint-plugin-unicorn": "28.0.2",
    "https-proxy-agent": "2.2.4",
    "jest": "24.9.0",
    "jest-marbles": "2.5.1",
    "jest-preset-angular": "7.1.1",
    "jspdf": "2.3.1",
    "ng-mocks": "11.9.1",
    "ngx-translate-testing": "5.1.0",
    "typescript": "4.0.3"
  }

и я хочу сгруппировать некоторые зависимости в одном MR (в данном случае сгруппировать зависимости с тем же именем).

Тест 1: Неудачный -> Я получаю один MR только с обновлением @angular / cdk. Здесь Renovate.json:

      {
  "gradle-lite": {
    "enabled": true
  },
  "gradle": {
    "enabled": false
  },
  "docker-compose": {
    "enabled": false
  },
  "dockerfile": {
    "enabled": false
  },
  "gitlabci": {
    "enabled": false
  },
  "packageRules": [
    {
      "groupName": "angular-eslint",
      "matchPackagePatterns": [
        "^@angular-eslint/"
      ]
    },
    {
      "groupName": "typescript-eslint",
      "matchPackagePatterns": [
        "^@typescript-eslint/"
      ]
    },
    {
      "groupName": "angular",
      "matchPackagePatterns": [
        "^@angular/"
      ],
      "excludePackageNames": [
        "@angular/cli"
      ]
    },
    {
      "groupName": "ngrx",
      "matchPackagePatterns": [
        "^@ngrx/"
      ]
    },
    {
      "groupName": "ag-grid",
      "matchPackagePatterns": [
        "^ag-grid-"
      ]
    },
    {
      "groupName": "spring-boot",
      "matchPackagePrefixes": [
        "org.springframework.boot:"
      ]
    },
    {
      "groupName": "mapstruct",
      "matchPackagePrefixes": [
        "org.mapstruct:"
      ]
    },
    {
      "groupName": "springfox",
      "matchPackagePrefixes": [
        "io.springfox:"
      ]
    }
  ],
  "prConcurrentLimit": 1
}

Тест 2: сбой -> я получаю несколько обновлений для одного MR (@angular-devkit / build-angular, @angular / cdk, @ typescript-eslint / eslint-plugin, @ typescript-eslint / parser, cypress, org.apache.tika : tika-parsers, tslib и многое другое (зависимости npm и gradle смешаны)

      {
  "gradle-lite": {
    "enabled": true
  },
  "gradle": {
    "enabled": false
  },
  "docker-compose": {
    "enabled": false
  },
  "dockerfile": {
    "enabled": false
  },
  "gitlabci": {
    "enabled": false
  },
  "packageRules": [
    {
      "groupName": "angular-eslint",
      "matchPackagePrefixes": [
        "@angular-eslint/"
      ]
    },
    {
      "groupName": "typescript-eslint",
      "matchPackagePrefixes": [
        "@typescript-eslint/"
      ]
    },
    {
      "groupName": "core-ui",
      "matchPackagePrefixes": [
        "@siemens/core-ui"
      ],
      "excludePackageNames": [
        "@siemens/core-ui-icons"
      ]
    },
    {
      "groupName": "angular",
      "matchPackagePrefixes": [
        "@angular/"
      ],
      "excludePackageNames": [
        "@angular/cli"
      ]
    },
    {
      "groupName": "ngrx",
      "matchPackagePrefixes": [
        "@ngrx/"
      ]
    },
    {
      "groupName": "ag-grid",
      "matchPackagePrefixes": [
        "ag-grid-"
      ]
    },
    {
      "groupName": "spring-boot",
      "matchPackagePrefixes": [
        "org.springframework.boot:"
      ]
    },
    {
      "groupName": "mapstruct",
      "matchPackagePrefixes": [
        "org.mapstruct:"
      ]
    },
    {
      "groupName": "springfox",
      "matchPackagePrefixes": [
        "io.springfox:"
      ]
    }
  ],
  "prConcurrentLimit": 1
}

В первом Renewate.json я использую matchPackagePatterns, а во втором -matchPackagePrefixes, но никто не работает. Что мне делать ?

Примечание. Существуют также зависимости java, но я думаю, что с package.json достаточно, чтобы понять проблему.

заранее спасибо

1 ответ

Видимо это была ошибка

https://github.com/renovatebot/renovate/pull/9949

В версии 25.18.5 должно быть исправлено

Другие вопросы по тегам