Skip to content
Snippets Groups Projects
  • Rhys Arkins's avatar
    7f4cb4aa
    feat: rangeStrategy (#1954) · 7f4cb4aa
    Rhys Arkins authored
    This PR replaces the existing `pinVersions`, `upgradeInRange` and `versionStrategy` settings with a single one: `rangeStrategy`.
    
    Previously:
     - `pinVersions` could be `true` or `false`, but defaulted to `null`, which meant that Renovate would decide. `true` meant that Renovate would replace existing ranges like `^1.0.0` with an exact/pinned version such as `1.2.0`.
     - `upgradeInRange` could be true or false, default to false. If `true`, it would mean Renovate would replace an existing range like `^1.0.0` with something like `^1.2.0`
     - `versionStrategy` could be `replace` or `widen` and was mainly used for `peerDependencies` to widen existing ranges, e.g. from `^1.0.0` to `^1.0.0 || ^2.0.0`
    
    It was possible to set conflicting settings, e.g. configuring `pinVersions=true` and `upgradeInRange=true`.
    
    Now, we combine them into a single setting: `rangeStrategy`:
     - `auto` = Renovate decides (this will be done on a manager-by-manager basis)
     - `pin` = convert ranges to exact versions
     - `bump` = same as `upgradeInRange` previously, e.g. bump the range even if the new version satisifies the existing range
     - `replace` = Same as pinVersions === false && upgradeInRange === false, i.e. only replace the range if the new version falls outside it
     - `widen` = Same as previous versionStrategy==='widen'
    7f4cb4aa
    History
    feat: rangeStrategy (#1954)
    Rhys Arkins authored
    This PR replaces the existing `pinVersions`, `upgradeInRange` and `versionStrategy` settings with a single one: `rangeStrategy`.
    
    Previously:
     - `pinVersions` could be `true` or `false`, but defaulted to `null`, which meant that Renovate would decide. `true` meant that Renovate would replace existing ranges like `^1.0.0` with an exact/pinned version such as `1.2.0`.
     - `upgradeInRange` could be true or false, default to false. If `true`, it would mean Renovate would replace an existing range like `^1.0.0` with something like `^1.2.0`
     - `versionStrategy` could be `replace` or `widen` and was mainly used for `peerDependencies` to widen existing ranges, e.g. from `^1.0.0` to `^1.0.0 || ^2.0.0`
    
    It was possible to set conflicting settings, e.g. configuring `pinVersions=true` and `upgradeInRange=true`.
    
    Now, we combine them into a single setting: `rangeStrategy`:
     - `auto` = Renovate decides (this will be done on a manager-by-manager basis)
     - `pin` = convert ranges to exact versions
     - `bump` = same as `upgradeInRange` previously, e.g. bump the range even if the new version satisifies the existing range
     - `replace` = Same as pinVersions === false && upgradeInRange === false, i.e. only replace the range if the new version falls outside it
     - `widen` = Same as previous versionStrategy==='widen'