diff --git a/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap b/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap index 19f1cfcec8761ca7241af43ea4f2e4879ccbd525..5d4c0f17c8bfb6010eb6199b28c81138498bb325 100644 --- a/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap +++ b/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap @@ -352,10 +352,46 @@ exports[`modules/manager/npm/extract/index .extractPackageFile() extracts npm pa "prettyDepType": "dependency", }, { - "currentValue": "npm:foo", + "currentValue": "^1.2.3", + "datasource": "npm", "depName": "c", "depType": "dependencies", "npmPackageAlias": true, + "packageName": "c", + "prettyDepType": "dependency", + }, + { + "currentValue": "1.2.3", + "datasource": "npm", + "depName": "d", + "depType": "dependencies", + "npmPackageAlias": true, + "packageName": "d", + "prettyDepType": "dependency", + }, + { + "currentValue": "1.x.x", + "datasource": "npm", + "depName": "e", + "depType": "dependencies", + "npmPackageAlias": true, + "packageName": "e", + "prettyDepType": "dependency", + }, + { + "currentValue": "foo", + "depName": "f", + "depType": "dependencies", + "npmPackageAlias": true, + "packageName": "f", + "prettyDepType": "dependency", + "skipReason": "unspecified-version", + }, + { + "currentValue": "npm:@foo/@bar/@1.2.3", + "depName": "g", + "depType": "dependencies", + "npmPackageAlias": true, "prettyDepType": "dependency", "skipReason": "unspecified-version", }, diff --git a/lib/modules/manager/npm/extract/common/dependency.ts b/lib/modules/manager/npm/extract/common/dependency.ts index c83b669d65dbd2dcba844b2f2c454845942478db..47575f75c8e24b2694f0047b47d940b1fe00f202 100644 --- a/lib/modules/manager/npm/extract/common/dependency.ts +++ b/lib/modules/manager/npm/extract/common/dependency.ts @@ -98,14 +98,19 @@ export function extractDependency( if (dep.currentValue.startsWith('npm:')) { dep.npmPackageAlias = true; const valSplit = dep.currentValue.replace('npm:', '').split('@'); - if (valSplit.length === 2) { + if (valSplit.length === 1) { + dep.packageName = depName; + dep.currentValue = valSplit[0]; + } else if (valSplit.length === 2) { dep.packageName = valSplit[0]; dep.currentValue = valSplit[1]; } else if (valSplit.length === 3) { dep.packageName = valSplit[0] + '@' + valSplit[1]; dep.currentValue = valSplit[2]; } else { - logger.debug('Invalid npm package alias: ' + dep.currentValue); + logger.debug( + `Invalid npm package alias for dependency: "${depName}":"${dep.currentValue}"` + ); } } if (dep.currentValue.startsWith('file:')) { diff --git a/lib/modules/manager/npm/extract/index.spec.ts b/lib/modules/manager/npm/extract/index.spec.ts index 144e75d8ac1d23ce350bbaddb2a29e5ca5a6d03c..9c722b0e61a11cee06a783a593841c7ebe2083d1 100644 --- a/lib/modules/manager/npm/extract/index.spec.ts +++ b/lib/modules/manager/npm/extract/index.spec.ts @@ -761,7 +761,11 @@ describe('modules/manager/npm/extract/index', () => { dependencies: { a: 'npm:foo@1', b: 'npm:@foo/bar@1.2.3', - c: 'npm:foo', + c: 'npm:^1.2.3', + d: 'npm:1.2.3', + e: 'npm:1.x.x', + f: 'npm:foo', + g: 'npm:@foo/@bar/@1.2.3', }, }; const pJsonStr = JSON.stringify(pJson); @@ -770,11 +774,28 @@ describe('modules/manager/npm/extract/index', () => { 'package.json', defaultExtractConfig ); + expect(logger.debug).toHaveBeenCalledWith( + 'Invalid npm package alias for dependency: "g":"npm:@foo/@bar/@1.2.3"' + ); expect(res).toMatchSnapshot({ deps: [ { packageName: 'foo' }, { packageName: '@foo/bar' }, - { depName: 'c' }, + { packageName: 'c', currentValue: '^1.2.3' }, + { packageName: 'd', currentValue: '1.2.3' }, + { packageName: 'e', currentValue: '1.x.x' }, + { + packageName: 'f', + currentValue: 'foo', + npmPackageAlias: true, + skipReason: 'unspecified-version', + }, + { + depName: 'g', + currentValue: 'npm:@foo/@bar/@1.2.3', + npmPackageAlias: true, + skipReason: 'unspecified-version', + }, ], }); });