mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-10 18:18:56 -04:00
fix: don't when the version of a pkg in the store is not semver (#4077)
This commit is contained in:
6
.changeset/big-carrots-raise.md
Normal file
6
.changeset/big-carrots-raise.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@pnpm/package-requester": patch
|
||||
"pnpm": patch
|
||||
---
|
||||
|
||||
Don't fail when the version of a package in the store is not a semver version.
|
||||
10
packages/package-requester/src/equalOrSemverEqual.ts
Normal file
10
packages/package-requester/src/equalOrSemverEqual.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import semver from 'semver'
|
||||
|
||||
export default function equalOrSemverEqual (version1: string, version2: string): boolean {
|
||||
if (version1 === version2) return true
|
||||
try {
|
||||
return semver.eq(version1, version2, { loose: true })
|
||||
} catch (err) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
@@ -47,6 +47,7 @@ import pick from 'ramda/src/pick'
|
||||
import renameOverwrite from 'rename-overwrite'
|
||||
import semver from 'semver'
|
||||
import ssri from 'ssri'
|
||||
import equalOrSemverEqual from './equalOrSemverEqual'
|
||||
import safeDeferredPromise from './safeDeferredPromise'
|
||||
|
||||
const TARBALL_INTEGRITY_FILENAME = 'tarball-integrity'
|
||||
@@ -446,7 +447,7 @@ function fetchToStore (
|
||||
// So it may happen that the version will be in different formats.
|
||||
// For instance, v1.0.0 and 1.0.0
|
||||
// Hence, we need to use semver.eq() to compare them.
|
||||
!semver.eq(pkgFilesIndex.version, opts.pkg.version, { loose: true })
|
||||
!equalOrSemverEqual(pkgFilesIndex.version, opts.pkg.version)
|
||||
)
|
||||
) {
|
||||
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
import equalOrSemverEqual from '@pnpm/package-requester/lib/equalOrSemverEqual'
|
||||
|
||||
test('equalOrSemverEqual()', () => {
|
||||
expect(equalOrSemverEqual('a', 'a')).toBeTruthy()
|
||||
expect(equalOrSemverEqual('a', 'b')).toBeFalsy()
|
||||
expect(equalOrSemverEqual('1.0.0', 'v1.0.0')).toBeTruthy()
|
||||
})
|
||||
Reference in New Issue
Block a user