Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslnode 18–226 runs
build_error
glibcnode 18–226 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
parseSemVer
✓ import { parseSemVer } from 'semver-parser'
✗ const parseSemVer = require('semver-parser').parseSemVer
This is for the synchronous parsing function. The package is primarily designed for ES Module imports. CommonJS `require` may result in `ERR_REQUIRE_ESM`.
isValidSemVer
✓ import { isValidSemVer } from 'semver-parser'
✗ import isValidSemVer from 'semver-parser'
All primary APIs are named exports. There is no default export.
promises
✓ import { promises } from 'semver-parser'; const { parseSemVer, isValidSemVer, compareSemVer } = promises;
✗ import { parseSemVer } from 'semver-parser/promises'
Asynchronous (Promise-based) versions of the functions are nested within the `promises` object, which is a named export from the main package.
Demonstrates both synchronous and asynchronous parsing, validation, and comparison of SemVer strings, including the use of the `strict` option.
import { parseSemVer, isValidSemVer, compareSemVer, promises } from 'semver-parser';
async function runSemVerExamples() {
const versionString = 'v1.2.3-alpha.1+build.123';
const baseVersionString = '1.2.0';
const strictVersion = '1.0.0';
console.log('--- Synchronous API Examples ---');
// Parse a version string (accepts 'v' prefix by default)
const parsed = parseSemVer(versionString);
console.log(`Parsed '${versionString}':`, JSON.stringify(parsed));
// Expected: { version: 'v1.2.3-alpha.1+build.123', matches: true, major: 1, minor: 2, patch: 3, pre: [ 'alpha', 1 ], build: [ 'build', 123 ] }
// Parse strictly (rejects 'v' prefix)
const parsedStrict = parseSemVer(versionString, true);
console.log(`Parsed strictly '${versionString}':`, JSON.stringify(parsedStrict));
// Expected: { version: 'v1.2.3-alpha.1+build.123', matches: false }
// Validate a version string
const isValid = isValidSemVer(strictVersion);
console.log(`Is '${strictVersion}' valid SemVer?`, isValid); // true
const isValidVPrefixStrict = isValidSemVer('v1.0.0', true);
console.log(`Is 'v1.0.0' valid SemVer (strict)?`, isValidVPrefixStrict); // false
// Compare two version strings
const comparisonResult = compareSemVer(versionString, baseVersionString);
console.log(`Compare '${versionString}' vs '${baseVersionString}':`, comparisonResult);
// Expected: 1 (versionString is greater)
console.log('\n--- Asynchronous API Examples ---');
// Destructure async functions from the 'promises' object
const { parseSemVer: parseSemVerAsync, isValidSemVer: isValidSemVerAsync, compareSemVer: compareSemVerAsync } = promises;
const parsedAsync = await parseSemVerAsync(versionString);
console.log(`Parsed (async) '${versionString}':`, JSON.stringify(parsedAsync));
const isValidAsync = await isValidSemVerAsync(strictVersion);
console.log(`Is '${strictVersion}' valid SemVer (async)?`, isValidAsync);
const comparisonAsync = await compareSemVerAsync(versionString, baseVersionString);
console.log(`Compare (async) '${versionString}' vs '${baseVersionString}':`, comparisonAsync);
}
runSemVerExamples().catch(console.error);
Errors
Common errors & fixes
ERR_REQUIRE_ESM: require() of ES Module [path]/node_modules/semver-parser/dist/index.js from [path]/your-project/index.js not supported.
Attempting to import `semver-parser` using CommonJS `require()` syntax in a Node.js environment, but the package is published as an ES Module.
fixEnsure your project uses ES Module `import` syntax (`import { parseSemVer } from 'semver-parser';`) and your environment is configured for ESM (e.g., `"type": "module"` in `package.json` for Node.js, or a bundler configured for ESM). TypeError: Cannot read properties of undefined (reading 'parseSemVer')
This error typically occurs when trying to access asynchronous functions like `parseSemVer` directly from the main `semver-parser` import, or if the `promises` object was not correctly imported/destructured.
fixFor asynchronous operations, correctly import and destructure from the `promises` object: `import { promises } from 'semver-parser'; const { parseSemVer } = promises;` For synchronous operations, ensure you are importing the synchronous function directly: `import { parseSemVer } from 'semver-parser';` Audit
Dependencies
No dependency data recorded yet.