diff --git a/lib/manager/npm/post-update/index.js b/lib/manager/npm/post-update/index.js index 466d4fb6778bf75bdf7a30c423b5b62067b188fb..19202bd7fdac0e7e3171b9306d2058c2fa4d7c6a 100644 --- a/lib/manager/npm/post-update/index.js +++ b/lib/manager/npm/post-update/index.js @@ -15,8 +15,7 @@ module.exports = { // Strips empty values, deduplicates, and returns the directories from filenames // istanbul ignore next -const getDirs = arr => - Array.from(new Set(arr.filter(Boolean).map(path.dirname))); +const getDirs = arr => Array.from(new Set(arr.filter(Boolean))); // istanbul ignore next function determineLockFileDirs(config, packageFiles) { @@ -317,13 +316,14 @@ async function getAdditionalFiles(config, packageFiles) { : { HOME: process.env.HOME, PATH: process.env.PATH }; env.NODE_ENV = 'dev'; - for (const lockFileDir of dirs.npmLockDirs) { - logger.debug(`Generating package-lock.json for ${lockFileDir}`); - const lockFileName = upath.join(lockFileDir, 'package-lock.json'); + for (const lockFile of dirs.npmLockDirs) { + const lockFileDir = path.dirname(lockFile); + const fileName = path.basename(lockFile); + logger.debug(`Generating ${fileName} for ${lockFileDir}`); const res = await npm.generateLockFile( upath.join(config.tmpDir.path, lockFileDir), env, - 'package-lock.json' + fileName ); if (res.error) { // istanbul ignore if @@ -348,79 +348,28 @@ async function getAdditionalFiles(config, packageFiles) { throw new Error('internal-error'); } lockFileErrors.push({ - lockFile: lockFileName, + lockFile, stderr: res.stderr, }); } else { const existingContent = await platform.getFile( - lockFileName, + lockFile, config.parentBranch ); if (res.lockFile !== existingContent) { logger.debug('package-lock.json needs updating'); updatedLockFiles.push({ - name: lockFileName, + name: lockFile, contents: res.lockFile, }); } else { - logger.debug("package-lock.json hasn't changed"); + logger.debug(`${lockFile} hasn't changed`); } } } - // istanbul ignore next - for (const lockFileDir of dirs.pnpmShrinkwrapDirs) { - logger.debug(`Generating npm-shrinkwrap.json for ${lockFileDir}`); - const lockFileName = upath.join(lockFileDir, 'npm-shrinkwrap.json'); - const res = await npm.generateLockFile( - upath.join(config.tmpDir.path, lockFileDir), - env, - 'npm-shrinkwrap.json' - ); - if (res.error) { - // istanbul ignore if - if (res.stderr && res.stderr.includes('No matching version found for')) { - for (const upgrade of config.upgrades) { - if ( - res.stderr.includes( - `No matching version found for ${upgrade.depName}` - ) - ) { - logger.info( - { dependency: upgrade.depName }, - 'npm install failed for the dependency being updated - skipping branch creation' - ); - throw new Error('registry-failure'); - } - } - } - // istanbul ignore if - if (res.stderr && res.stderr.includes('Host key verification failed')) { - logger.info({ stderr: res.stderr }, 'Host key verification failed'); - throw new Error('internal-error'); - } - lockFileErrors.push({ - lockFile: lockFileName, - stderr: res.stderr, - }); - } else { - const existingContent = await platform.getFile( - lockFileName, - config.parentBranch - ); - if (res.lockFile !== existingContent) { - logger.debug('npm-shrinkwrap.json needs updating'); - updatedLockFiles.push({ - name: lockFileName, - contents: res.lockFile, - }); - } else { - logger.debug("npm-shrinkwrap.json hasn't changed"); - } - } - } - - for (const lockFileDir of dirs.yarnLockDirs) { + for (const lockFile of dirs.yarnLockDirs) { + const lockFileDir = path.dirname(lockFile); logger.debug(`Generating yarn.lock for ${lockFileDir}`); const lockFileName = upath.join(lockFileDir, 'yarn.lock'); const res = await yarn.generateLockFile( @@ -472,9 +421,9 @@ async function getAdditionalFiles(config, packageFiles) { } } - for (const lockFileDir of dirs.pnpmShrinkwrapDirs) { + for (const lockFile of dirs.pnpmShrinkwrapDirs) { + const lockFileDir = path.dirname(lockFile); logger.debug(`Generating shrinkwrap.yaml for ${lockFileDir}`); - const lockFileName = upath.join(lockFileDir, 'shrinkwrap.yaml'); const res = await pnpm.generateLockFile( upath.join(config.tmpDir.path, lockFileDir), env @@ -502,18 +451,18 @@ async function getAdditionalFiles(config, packageFiles) { throw new Error('internal-error'); } lockFileErrors.push({ - lockFile: lockFileName, + lockFile, stderr: res.stderr, }); } else { const existingContent = await platform.getFile( - lockFileName, + lockFile, config.parentBranch ); if (res.lockFile !== existingContent) { logger.debug('shrinkwrap.yaml needs updating'); updatedLockFiles.push({ - name: lockFileName, + name: lockFile, contents: res.lockFile, }); } else {