jscutlery / semver

Nx plugin to automate semantic versioning and CHANGELOG generation.
MIT License
719 stars 83 forks source link

`Release` does not consider `prerelease` tag #817

Open kaankoken opened 1 month ago

kaankoken commented 1 month ago

I have created a mono-repo configuration with proj1 & proj2. I have added a separate command for both release & prerelease. I initially added tags manually for both projects as proj1@v1.0.0 & proj2@v1.0.0. I added some commits and created a release via nx affected -t release --verbose, and everything looks fine.

# git history & tags
06e04e63 KT ◯ proj2@v1.0.0 feat: proj2 initial version 
a3f0f6a4 KT ◯ proj1@v1.0.0 feat: proj1 initial version
7e63ffc3 KT ◯ feat: initial commit

After that, I wanted to try out prerelease. Again, I added some commits and created a prerelease via nx affected -t prerelease --verbose. Until now, everything looks fine.

# git history & tags
50a6e71c KT ◯ proj2@v2.0.0-rc.1 chore(proj2): release version 2.0.0-rc.1   
27a337c5 KT ◯ fix: test with another commit
32a80130 KT ◯ proj2@v2.0.0-rc.0 chore(proj2): release version 2.0.0-rc.0 
3bf74969 KT ◯ fix: proj2 prerelease test 
4546ee6a KT ◯ proj1@v1.1.0-rc.0 chore(proj1): release version 1.1.0-rc.0
b952d741 KT ◯ feat: prerelease test 
06e04e63 KT ◯ proj2@v1.0.0 feat: proj2 initial version
3f0f6a4 KT ◯ proj1@v1.0.0 feat: proj1 initial version                                                                                                                                                                                  7e63ffc3 KT ◯ feat: initial commit

Then, I wanted to turn prereleases to release, and run nx affected -t release --verbose. However, it does not into account the prerelease tags. What would be the solution for this issue?

# Result
➜ nx affected -t release --verbose --dry-run

 NX   Affected criteria defaulted to --base=master --head=HEAD

 NX   Running target release for 2 projects:

- proj1
- proj2

With additional flags:
  --dry-run=true

> nx run proj1:release --dry-run

[proj1] 🆕 Calculated new version "1.0.1".

> nx run proj2:release --dry-run

[proj2] 🆕 Calculated new version "1.0.1".

 NX   Successfully ran target release for 2 projects

The configurations are below.

// nx.json
    "release": {
      "dependsOn": ["^release"],
      "options": {
        "skipRootChangelog": true,
        "skipProjectChangelog": true,
        "trackDeps": true
      }
    },
    "prerelease": {
      "dependsOn": ["^prerelease"],
      "options": {
        "skipRootChangelog": true,
        "skipProjectChangelog": true,
        "preid": "rc",
        "releaseAs": "prerelease",
        "trackDeps": true
      }
    }
project.json
    "release": {
      "executor": "@jscutlery/semver:version",
      "options": {
        "preset": "angular",
        "tagPrefix": "{projectName}@v"
      }
    },
    "prerelease": {
      "executor": "@jscutlery/semver:version",
      "options": {
        "preset": "angular",
        "tagPrefix": "{projectName}@v"
      }
    }