diff --git a/lib/manager/npm/extract/monorepo.js b/lib/manager/npm/extract/monorepo.js
index 66137cfbb44f28b121c28f85129074ee1bf30c8b..55752c02f69e3f8833c90edf2bcb12abb4fa4931 100644
--- a/lib/manager/npm/extract/monorepo.js
+++ b/lib/manager/npm/extract/monorepo.js
@@ -54,6 +54,10 @@ function detectMonorepos(packageFiles) {
         subPackage.lernaClient = lernaClient;
         subPackage.yarnLock = subPackage.yarnLock || yarnLock;
         subPackage.npmLock = subPackage.npmLock || npmLock;
+        // istanbul ignore if
+        if (subPackage.yarnLock) {
+          subPackage.hasYarnWorkspaces = !!yarnWorkspacesPackages;
+        }
       }
     }
   }
diff --git a/lib/manager/npm/post-update/index.js b/lib/manager/npm/post-update/index.js
index 720f235b2f715c817c8b0465c911a9ba32b77b02..6734a858eb0cf547b8ba52fe3480780d9898dc73 100644
--- a/lib/manager/npm/post-update/index.js
+++ b/lib/manager/npm/post-update/index.js
@@ -78,6 +78,12 @@ function determineLockFileDirs(config, packageFiles) {
     if (packageFile.lernaDir && packageFile.npmLock) {
       logger.debug(`${packageFile.packageFile} has lerna lock file`);
       lernaDirs.push(packageFile.lernaDir);
+    } else if (
+      packageFile.lernaDir &&
+      packageFile.yarnLock &&
+      !packageFile.hasYarnWorkspaces
+    ) {
+      lernaDirs.push(packageFile.lernaDir);
     } else {
       // push full lock file names and convert them later
       yarnLockDirs.push(packageFile.yarnLock);