node-semver
node-semver copied to clipboard
[BUG]semver.Range returns pre-release version even when includePrerelease is set to false
What / Why
new semver.Range returns prerelease semver version even when includePrerelease is set to false with version 7.3.5.
How
Current Behavior
const semver = require('semver');
new semver.Range('^12.0.0 || ^13.0.0-rc.0', { includePrerelease: false})
options: Object {}
loose: false
includePrerelease: false
raw: "^12.0.0 || ^13.0.0-rc.0"
range: ">=12.0.0 <13.0.0-0||>=13.0.0-rc.0 <14.0.0-0"
Expected Behavior
range doesn't include pre-releases when includePrerelease is set to false.
+ range: ">=12.0.0 <13.0.0-0"
- range: ">=12.0.0 <13.0.0-0||>=13.0.0-rc.0 <14.0.0-0"
I wouldn’t expect that; the option is whether non prerelease ranges should include it. An explicit prerelease range I’d expect will always include it.
I had the same confusion when I was first looking at this package. I at first thought that it would make sense that new semver.Range(range, { includePrerelease: true}) included all prerelease; new semver.Range(range, { includePrerelease: false}) included no prerelease; and new semver.Range(range) included prerelease per the rules about prerelease matching.
It would be clearer if the parameter were named includeAllPrerelease. That is what I have done in my own package.