mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-10 18:18:56 -04:00
fix: don't incorrectly consider a lockfile to be out-of-date (#5121)
This commit is contained in:
6
.changeset/gentle-mice-press.md
Normal file
6
.changeset/gentle-mice-press.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@pnpm/core": patch
|
||||
"pnpm": patch
|
||||
---
|
||||
|
||||
Don't incorrectly consider a lockfile out-of-date when `workspace:^` or `workspace:~` version specs are used in a workspace.
|
||||
@@ -102,7 +102,7 @@ async function linkedPackagesAreUpToDate (
|
||||
const linkedPkg = manifestsByDir[linkedDir] ?? await safeReadPkgFromDir(linkedDir)
|
||||
const availableRange = getVersionRange(currentSpec)
|
||||
// This should pass the same options to semver as @pnpm/npm-resolver
|
||||
const localPackageSatisfiesRange = availableRange === '*' ||
|
||||
const localPackageSatisfiesRange = availableRange === '*' || availableRange === '^' || availableRange === '~' ||
|
||||
linkedPkg && semver.satisfies(linkedPkg.version, availableRange, { loose: true })
|
||||
if (isLinked !== localPackageSatisfiesRange) return false
|
||||
}
|
||||
|
||||
@@ -178,6 +178,8 @@ test('allProjectsAreUpToDate(): use link and registry version if linkWorkspacePa
|
||||
manifest: {
|
||||
dependencies: {
|
||||
foo: 'workspace:*',
|
||||
foo2: 'workspace:~',
|
||||
foo3: 'workspace:^',
|
||||
},
|
||||
},
|
||||
rootDir: 'bar',
|
||||
@@ -196,6 +198,22 @@ test('allProjectsAreUpToDate(): use link and registry version if linkWorkspacePa
|
||||
manifest: fooManifest,
|
||||
rootDir: 'foo',
|
||||
},
|
||||
{
|
||||
id: 'foo2',
|
||||
manifest: {
|
||||
name: 'foo2',
|
||||
version: '1.0.0',
|
||||
},
|
||||
rootDir: 'foo2',
|
||||
},
|
||||
{
|
||||
id: 'foo3',
|
||||
manifest: {
|
||||
name: 'foo3',
|
||||
version: '1.0.0',
|
||||
},
|
||||
rootDir: 'foo3',
|
||||
},
|
||||
],
|
||||
{
|
||||
autoInstallPeers: false,
|
||||
@@ -205,9 +223,13 @@ test('allProjectsAreUpToDate(): use link and registry version if linkWorkspacePa
|
||||
bar: {
|
||||
dependencies: {
|
||||
foo: 'link:../foo',
|
||||
foo2: 'link:../foo2',
|
||||
foo3: 'link:../foo3',
|
||||
},
|
||||
specifiers: {
|
||||
foo: 'workspace:*',
|
||||
foo2: 'workspace:~',
|
||||
foo3: 'workspace:^',
|
||||
},
|
||||
},
|
||||
bar2: {
|
||||
@@ -221,6 +243,12 @@ test('allProjectsAreUpToDate(): use link and registry version if linkWorkspacePa
|
||||
foo: {
|
||||
specifiers: {},
|
||||
},
|
||||
foo2: {
|
||||
specifiers: {},
|
||||
},
|
||||
foo3: {
|
||||
specifiers: {},
|
||||
},
|
||||
},
|
||||
lockfileVersion: 5,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user