Skip to content

[QUESTION] Very confusing behavior for pre-release range matching #721

Description

@robross0606

When checking pre-release ranges, the results are very confusing. I have read the documentation many times, run a bunch of tests and reviewed all bug tickets. There are several open and closed issues that seem related to this, but I still can't figure out how this is expected to work. For example:

npx semver --range ">=1.0.2-0" "1.0.3-6"

Results in a non-match. Why if the range is ">=" and the range explicitly includes prereleases via "-0"? This seems to be incorrect.

npx semver --range "^1.0.2-0" "1.0.3-6"

Also results in a non-match. This seems to also be incorrect.

npx semver --range "^1.0.2-0" "1.0.3"

Results in a match. This is correct, but doesn't make sense that this would match when "1.0.3-6" does not.

 npx semver --range ">=1.0.2-0" "1.0.2-6"

Results in a match. This is correct.

So then I looked at using --include-prerelease. This seemed like the right approach based on the "Prerelease Tags" section in the README. However, this causes behavior to seem incorrect in the other extreme:

npx semver --include-prerelease --range "^1.0.2" "1.0.3-6"

Results in a match. Wait, what? This seems to completely contradict motivation expressed in the "Prerelease Tags" section.

So how can this be used effectively in automation to match versions in situations where we do want to include pre-releases from those where we do not if we cannot express that purely from the range expression itself? It seems to me that, the way this is designed, the range expression is barely (if at all) being used to decide if pre-releases are included.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions