diff --git a/lib/manager/npm/extract/index.js b/lib/manager/npm/extract/index.js index d11118345f8d3bb9cd5cb1576e97ec83875c0f86..1f6f5f5674d263b46348564e2d2c9c4d533111a3 100644 --- a/lib/manager/npm/extract/index.js +++ b/lib/manager/npm/extract/index.js @@ -110,13 +110,23 @@ async function extractDependencies(content, packageFile, config) { }; // TODO: do we need to remove the equals? dep.currentVersion = version.trim().replace(/^=/, ''); - if (dep.currentVersion.startsWith('file:')) { + if (depType === 'engines') { + if (depName === 'node') { + dep.purl = 'pkg:github/nodejs/node?clean=true'; + } else if (depName === 'yarn') { + dep.purl = 'pkg:github/yarnpkg/yarn?clean=true'; + dep.commitMessageTopic = 'Yarn'; + } else if (depName === 'npm') { + dep.purl = 'pkg:github/npm/npm?clean=true'; + dep.commitMessageTopic = 'npm'; + } else { + dep.skipReason = 'unknown-engines'; + } + if (!semver.isValid(dep.currentVersion)) { + dep.skipReason = 'unknown-version'; + } + } else if (dep.currentVersion.startsWith('file:')) { dep.skipReason = 'file'; - } else if (depType === 'engines' && depName === 'node') { - dep.purl = 'pkg:github/nodejs/node?clean=true'; - } else if (depType === 'engines' && depName === 'yarn') { - dep.purl = 'pkg:github/yarnpkg/yarn?clean=true'; - dep.commitMessageTopic = 'Yarn'; } else if (semver.isValid(dep.currentVersion)) { dep.purl = `pkg:npm/${depName.replace('@', '%40')}`; if (dep.currentVersion === '*') { diff --git a/test/manager/npm/extract/__snapshots__/index.spec.js.snap b/test/manager/npm/extract/__snapshots__/index.spec.js.snap index 4e090bbc9eaf81658cac4484291c238709656b1a..70f912d939d299eb599c1735e93ca0bb19f34b4e 100644 --- a/test/manager/npm/extract/__snapshots__/index.spec.js.snap +++ b/test/manager/npm/extract/__snapshots__/index.spec.js.snap @@ -34,6 +34,12 @@ Object { "depType": "devDependencies", "skipReason": "unknown-version", }, + Object { + "currentVersion": ">=1.7.0 <2.0.0", + "depName": "atom", + "depType": "engines", + "skipReason": "unknown-engines", + }, Object { "commitMessageTopic": "Node.js", "currentVersion": ">= 8.9.2", @@ -44,12 +50,20 @@ Object { }, "purl": "pkg:github/nodejs/node?clean=true", }, + Object { + "commitMessageTopic": "npm", + "currentVersion": "^8.0.0", + "depName": "npm", + "depType": "engines", + "purl": "pkg:github/npm/npm?clean=true", + }, Object { "commitMessageTopic": "Yarn", - "currentVersion": "1.7.0", + "currentVersion": "disabled", "depName": "yarn", "depType": "engines", "purl": "pkg:github/yarnpkg/yarn?clean=true", + "skipReason": "unknown-version", }, ], "lernaClient": undefined, diff --git a/test/manager/npm/extract/index.spec.js b/test/manager/npm/extract/index.spec.js index f86f496b24cfe2965a414ad5f247b36011fb9cf9..7ecd8b02961dfa9a76563834a93aba23e0f85716 100644 --- a/test/manager/npm/extract/index.spec.js +++ b/test/manager/npm/extract/index.spec.js @@ -131,8 +131,10 @@ describe('manager/npm/extract', () => { other: 'latest', }, engines: { + atom: '>=1.7.0 <2.0.0', node: '>= 8.9.2', - yarn: '1.7.0', + npm: '^8.0.0', + yarn: 'disabled', }, }; const pJsonStr = JSON.stringify(pJson);