diff --git a/lib/manager/npm/registry.js b/lib/manager/npm/registry.js index fb8ae67fdd97c8fef152d88048be660823822ed0..38a7879d19a34779b48b961d411bcb5e0f8b0354 100644 --- a/lib/manager/npm/registry.js +++ b/lib/manager/npm/registry.js @@ -10,15 +10,24 @@ const parse = require('github-url-from-git'); module.exports = { setNpmrc, getDependency, + resetMemCache, resetCache, }; let map = new Map(); +let memcache = {}; + let npmrc = null; +function resetMemCache() { + logger.debug('resetMemCache()'); + memcache = {}; +} + function resetCache() { map = new Map(); + resetMemCache(); } function setNpmrc(input) { @@ -31,6 +40,10 @@ function setNpmrc(input) { async function getDependency(name) { logger.trace(`getDependency(${name})`); + if (memcache[name]) { + logger.debug('Returning cached result'); + return memcache[name]; + } const scope = name.split('/')[0]; let regUrl; try { @@ -84,6 +97,7 @@ async function getDependency(name) { }; }); logger.trace({ dep }, 'dep'); + memcache[name] = dep; return dep; } catch (err) { if (err.statusCode === 401) { diff --git a/lib/workers/repository/init/apis.js b/lib/workers/repository/init/apis.js index 5652443e9e92bb0f11b1e2382b5b800204ae6e8c..3cf04ce5849d101e2af3da235e091370f0c1b0e4 100644 --- a/lib/workers/repository/init/apis.js +++ b/lib/workers/repository/init/apis.js @@ -26,6 +26,7 @@ async function initApis(input, token) { config = await assignPlatform(config); config = await getPlatformConfig(config); config.npmrc = config.npmrc || (await platform.getFile('.npmrc')); + npmApi.resetMemCache(); npmApi.setNpmrc(config.npmrc); return config; }