diff --git a/lib/modules/manager/npm/post-update/npm.spec.ts b/lib/modules/manager/npm/post-update/npm.spec.ts index 170ca700c57bde6b0a714cc7ccf8bba0d446d3eb..3637ecbd0812388cd1be11d794e6a7eb0cbd4986 100644 --- a/lib/modules/manager/npm/post-update/npm.spec.ts +++ b/lib/modules/manager/npm/post-update/npm.spec.ts @@ -459,6 +459,17 @@ describe('modules/manager/npm/post-update/npm', () => { workspacesPackages: ['docs/*', 'web/*'], }, }, + { + packageFile: 'some-missing-dir/docs/a/package.json', + packageName: 'hello', + depType: 'dependencies', + newVersion: '1.1.1', + newValue: '^1.0.0', + isLockfileUpdate: true, + managerData: { + workspacesPackages: ['docs/*', 'web/*'], + }, + }, ]; it('workspace in sub-folder', async () => { diff --git a/lib/modules/manager/npm/post-update/npm.ts b/lib/modules/manager/npm/post-update/npm.ts index 3540350264e0988281e1ff406723840a20490bf9..4189c644798c2439523aa855de66037123faf19a 100644 --- a/lib/modules/manager/npm/post-update/npm.ts +++ b/lib/modules/manager/npm/post-update/npm.ts @@ -265,18 +265,28 @@ export function divideWorkspaceAndRootDeps( // stop when the first match is found and // add workspaceDir to workspaces set and upgrade object for (const workspacePattern of workspacePatterns) { - if (minimatch(workspacePattern).match(workspaceDir)) { + const massagedPattern = (workspacePattern as string).replace( + /^\.\//, + '', + ); + if (minimatch(massagedPattern).match(workspaceDir)) { workspaceName = workspaceDir; break; } } - if ( - workspaceName && - !rootDeps.has(upgrade.managerData.packageKey) // prevent same dep from existing in root and workspace - ) { - workspaces.add(workspaceName); - upgrade.workspace = workspaceName; - lockWorkspacesUpdates.push(upgrade); + if (workspaceName) { + if ( + !rootDeps.has(upgrade.managerData.packageKey) // prevent same dep from existing in root and workspace + ) { + workspaces.add(workspaceName); + upgrade.workspace = workspaceName; + lockWorkspacesUpdates.push(upgrade); + } + } else { + logger.warn( + { workspacePatterns, workspaceDir }, + 'workspaceDir not found', + ); } continue; }