From cc8a3bd312ea1405a6c79b1d157f0f9ae1be07aa Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Wed, 20 May 2020 11:30:38 +0300 Subject: [PATCH] refactor!(resolve-dependencies): remove options.updateDepth --- .changeset/flat-sloths-appear.md | 5 ++++ .changeset/lemon-crews-impress.md | 5 ++++ packages/resolve-dependencies/src/index.ts | 2 -- .../src/resolveDependencies.ts | 5 +--- packages/supi/src/install/index.ts | 24 ++++++++++--------- packages/supi/test/install/misc.ts | 2 +- 6 files changed, 25 insertions(+), 18 deletions(-) create mode 100644 .changeset/flat-sloths-appear.md create mode 100644 .changeset/lemon-crews-impress.md diff --git a/.changeset/flat-sloths-appear.md b/.changeset/flat-sloths-appear.md new file mode 100644 index 0000000000..690a56c130 --- /dev/null +++ b/.changeset/flat-sloths-appear.md @@ -0,0 +1,5 @@ +--- +"supi": patch +--- + +Installation on a non-up-to-date `node_modules`. diff --git a/.changeset/lemon-crews-impress.md b/.changeset/lemon-crews-impress.md new file mode 100644 index 0000000000..9f7e881cd6 --- /dev/null +++ b/.changeset/lemon-crews-impress.md @@ -0,0 +1,5 @@ +--- +"@pnpm/resolve-dependencies": major +--- + +`updateLockfile` options property is removed. `updateDepth=Infinity` should be used instead. Which is set for each project separately. diff --git a/packages/resolve-dependencies/src/index.ts b/packages/resolve-dependencies/src/index.ts index eb82273f39..58dd929288 100644 --- a/packages/resolve-dependencies/src/index.ts +++ b/packages/resolve-dependencies/src/index.ts @@ -63,7 +63,6 @@ export default async function ( tag: string, virtualStoreDir: string, wantedLockfile: Lockfile, - updateLockfile: boolean, workspacePackages: WorkspacePackages, } ) { @@ -89,7 +88,6 @@ export default async function ( resolvedPackagesByPackageId: {} as ResolvedPackagesByPackageId, skipped: wantedToBeSkippedPackageIds, storeController: opts.storeController, - updateLockfile: opts.updateLockfile, virtualStoreDir: opts.virtualStoreDir, wantedLockfile: opts.wantedLockfile, } diff --git a/packages/resolve-dependencies/src/resolveDependencies.ts b/packages/resolve-dependencies/src/resolveDependencies.ts index 9d95905dcc..f4d0e5c707 100644 --- a/packages/resolve-dependencies/src/resolveDependencies.ts +++ b/packages/resolve-dependencies/src/resolveDependencies.ts @@ -126,7 +126,6 @@ export interface ResolutionContext { childrenByParentId: ChildrenByParentId, pendingNodes: PendingNode[], wantedLockfile: Lockfile, - updateLockfile: boolean, currentLockfile: Lockfile, linkWorkspacePackagesDepth: number, lockfileDir: string, @@ -231,7 +230,6 @@ export default async function resolveDependencies ( proceed: options.proceed, registries: ctx.registries, resolvedDependencies: options.resolvedDependencies, - updateLockfile: ctx.updateLockfile, }) const resolveDepOpts = { alwaysTryWorkspacePackages: options.alwaysTryWorkspacePackages, @@ -366,7 +364,6 @@ function getDepsToResolve ( proceed: boolean, registries: Registries, resolvedDependencies?: ResolvedDependencies, - updateLockfile: boolean, } ) { const resolvedDependencies = options.resolvedDependencies ?? {} @@ -375,7 +372,7 @@ function getDepsToResolve ( // The only reason we resolve children in case the package depends on peers // is to get information about the existing dependencies, so that they can // be merged with the resolved peers. - const proceedAll = options.proceed || options.parentDependsOnPeers || options.updateLockfile + const proceedAll = options.proceed || options.parentDependsOnPeers let allPeers = new Set() for (const wantedDependency of wantedDependencies) { let reference = wantedDependency.alias && resolvedDependencies[wantedDependency.alias] diff --git a/packages/supi/src/install/index.ts b/packages/supi/src/install/index.ts index bcf7564704..93dfc6c67d 100644 --- a/packages/supi/src/install/index.ts +++ b/packages/supi/src/install/index.ts @@ -590,24 +590,26 @@ async function installInContext ( stage: 'resolution_started', }) - const defaultUpdateDepth = (() => { - if (opts.force) return Infinity - if (opts.update) { - return opts.depth - } - return -1 - })() const preferredVersions = opts.preferredVersions ?? ( !opts.update && ctx.wantedLockfile.packages && !R.isEmpty(ctx.wantedLockfile.packages) && getPreferredVersionsFromLockfile(ctx.wantedLockfile.packages!) || undefined ) + const updateLockfile = ctx.wantedLockfile.lockfileVersion !== LOCKFILE_VERSION || !opts.currentLockfileIsUpToDate + const defaultUpdateDepth = (() => { + if (opts.force || updateLockfile) return Infinity + if (opts.update) { + return opts.depth + } + return -1 + })() const _toResolveImporter = toResolveImporter.bind(null, { defaultUpdateDepth, lockfileOnly: opts.lockfileOnly, preferredVersions, storeDir: ctx.storeDir, + updateLockfile, virtualStoreDir: ctx.virtualStoreDir, workspacePackages: opts.workspacePackages, }) @@ -634,7 +636,6 @@ async function installInContext ( resolutionStrategy: opts.resolutionStrategy, storeController: opts.storeController, tag: opts.tag, - updateLockfile: ctx.wantedLockfile.lockfileVersion !== LOCKFILE_VERSION || !opts.currentLockfileIsUpToDate, virtualStoreDir: ctx.virtualStoreDir, wantedLockfile: ctx.wantedLockfile, workspacePackages: opts.workspacePackages, @@ -842,9 +843,10 @@ async function toResolveImporter ( opts: { defaultUpdateDepth: number, lockfileOnly: boolean, - storeDir: string, - virtualStoreDir: string, preferredVersions?: PreferredVersions, + storeDir: string, + updateLockfile: boolean, + virtualStoreDir: string, workspacePackages: WorkspacePackages, }, project: ImporterToUpdate @@ -861,7 +863,7 @@ async function toResolveImporter ( const existingDeps = nonLinkedDependencies .filter(({ alias }) => !project.wantedDependencies.some((wantedDep) => wantedDep.alias === alias)) let wantedDependencies!: Array - if (!project.manifest) { + if (!project.manifest || opts.updateLockfile) { wantedDependencies = [ ...project.wantedDependencies, ...existingDeps, diff --git a/packages/supi/test/install/misc.ts b/packages/supi/test/install/misc.ts index bd6caca0f8..39fd847bf2 100644 --- a/packages/supi/test/install/misc.ts +++ b/packages/supi/test/install/misc.ts @@ -990,7 +990,7 @@ test('all the subdeps of dependencies are linked when a node_modules is partiall 'bar', 'foo', 'foobarqar', - 'is-positive', + 'qar', ] ) })