fix: don't when the version of a pkg in the store is not semver (#4077)

This commit is contained in:
Zoltan Kochan
2021-12-06 22:58:27 +02:00
committed by GitHub
parent 30bfca9671
commit 77ff0898b8
4 changed files with 25 additions and 1 deletions

View 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.

View 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
}
}

View File

@@ -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 */

View File

@@ -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()
})