mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-10 18:18:56 -04:00
fix(supi): never do full resolution when package manifest is ignored (#3579)
Close #3576
This commit is contained in:
5
.changeset/six-weeks-perform.md
Normal file
5
.changeset/six-weeks-perform.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"supi": patch
|
||||
---
|
||||
|
||||
Never do full resolution when package manifest is ignored
|
||||
@@ -190,12 +190,15 @@ export async function mutateModules (
|
||||
|
||||
async function _install (): Promise<Array<{ rootDir: string, manifest: ProjectManifest }>> {
|
||||
const packageExtensionsChecksum = isEmpty(packageExtensions ?? {}) ? undefined : createObjectChecksum(packageExtensions!)
|
||||
let needsFullResolution = !equals(ctx.wantedLockfile.overrides ?? {}, overrides ?? {}) ||
|
||||
let needsFullResolution = !maybeOpts.ignorePackageManifest && (
|
||||
!equals(ctx.wantedLockfile.overrides ?? {}, overrides ?? {}) ||
|
||||
!equals((ctx.wantedLockfile.neverBuiltDependencies ?? []).sort(), (neverBuiltDependencies ?? []).sort()) ||
|
||||
ctx.wantedLockfile.packageExtensionsChecksum !== packageExtensionsChecksum
|
||||
ctx.wantedLockfile.overrides = overrides
|
||||
ctx.wantedLockfile.neverBuiltDependencies = neverBuiltDependencies
|
||||
ctx.wantedLockfile.packageExtensionsChecksum = packageExtensionsChecksum
|
||||
ctx.wantedLockfile.packageExtensionsChecksum !== packageExtensionsChecksum)
|
||||
if (needsFullResolution) {
|
||||
ctx.wantedLockfile.overrides = overrides
|
||||
ctx.wantedLockfile.neverBuiltDependencies = neverBuiltDependencies
|
||||
ctx.wantedLockfile.packageExtensionsChecksum = packageExtensionsChecksum
|
||||
}
|
||||
const frozenLockfile = opts.frozenLockfile ||
|
||||
opts.frozenLockfileIfExists && ctx.existsWantedLockfile
|
||||
if (
|
||||
|
||||
@@ -36,6 +36,15 @@ test('versions are replaced with versions specified through pnpm.overrides field
|
||||
const currentLockfile = await project.readCurrentLockfile()
|
||||
expect(lockfile.overrides).toStrictEqual(currentLockfile.overrides)
|
||||
}
|
||||
// shall be able to install when package manifest is ignored
|
||||
await mutateModules([
|
||||
{
|
||||
buildIndex: 0,
|
||||
manifest,
|
||||
mutation: 'install',
|
||||
rootDir: process.cwd(),
|
||||
},
|
||||
], { ...await testDefaults(), ignorePackageManifest: true })
|
||||
|
||||
// The lockfile is updated if the overrides are changed
|
||||
manifest.pnpm!.overrides!['bar@^100.0.0'] = '100.0.0'
|
||||
|
||||
Reference in New Issue
Block a user