Skip to content

Commit

Permalink
fix(supi): never do full resolution when package manifest is ignored (#…
Browse files Browse the repository at this point in the history
…3579)

Close #3576
  • Loading branch information
thynson committed Jul 4, 2021
1 parent ed07cb9 commit b3478c7
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 5 deletions.
5 changes: 5 additions & 0 deletions .changeset/six-weeks-perform.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"supi": patch
---

Never do full resolution when package manifest is ignored
13 changes: 8 additions & 5 deletions packages/supi/src/install/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down
9 changes: 9 additions & 0 deletions packages/supi/test/install/overrides.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down

0 comments on commit b3478c7

Please sign in to comment.