diff --git a/lib/datasource/npm/get.js b/lib/datasource/npm/get.js index 4a6ae3630941f78536722a889d5a8e49e9a0a85a..dfa8317f0af95a2cea8fdb41d2660cde0e0c92e0 100644 --- a/lib/datasource/npm/get.js +++ b/lib/datasource/npm/get.js @@ -36,13 +36,6 @@ async function getDependency(name) { return JSON.parse(memcache[name]); } - // Now check the persistent cache - const cacheNamespace = 'datasource-npm'; - const cachedResult = await renovateCache.get(cacheNamespace, name); - if (cachedResult) { - return cachedResult; - } - const scope = name.split('/')[0]; let regUrl; const npmrc = getNpmrc(); @@ -55,6 +48,12 @@ async function getDependency(name) { regUrl, encodeURIComponent(name).replace(/^%40/, '@') ); + // Now check the persistent cache + const cacheNamespace = 'datasource-npm'; + const cachedResult = await renovateCache.get(cacheNamespace, pkgUrl); + if (cachedResult) { + return cachedResult; + } const authInfo = registryAuthToken(regUrl, { npmrc }); const headers = {}; @@ -197,7 +196,7 @@ async function getDependency(name) { ? parseInt(process.env.RENOVATE_CACHE_NPM_MINUTES, 10) : 5; if (!name.startsWith('@')) { - await renovateCache.set(cacheNamespace, name, dep, cacheMinutes); + await renovateCache.set(cacheNamespace, pkgUrl, dep, cacheMinutes); } return dep; } catch (err) { diff --git a/test/datasource/npm/index.spec.js b/test/datasource/npm/index.spec.js index 2169e92c2278a1b2f0294c5b43118f0fe6027ee0..d0d7ebf3a1c8b1b4ebb950fa098ca140f6509908 100644 --- a/test/datasource/npm/index.spec.js +++ b/test/datasource/npm/index.spec.js @@ -366,8 +366,13 @@ describe('api/npm', () => { const dep = { name: 'abc123', }; - await global.renovateCache.set('datasource-npm', 'foobar', dep, 10); - const res = await npm.getPkgReleases({ lookupName: 'foobar' }); + await global.renovateCache.set( + 'datasource-npm', + 'https://registry.npmjs.org/abc123', + dep, + 10 + ); + const res = await npm.getPkgReleases({ lookupName: 'abc123' }); expect(res).toEqual(dep); }); it('should fetch package info from custom registry', async () => {