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 {