From 6d17d4a58de94fd54c3dc5b4f6e55ad70a9dc5ec Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@keylocation.sg>
Date: Sun, 12 Nov 2017 10:16:46 +0100
Subject: [PATCH] fix: only ignore monorepo packages if matching glob (#1153)

Previously, packages within a workspace or lerna project were ignores across the entire repo. Now, they are only ignored within package files that exist in the same lerna project or yarn workspace.

Closes #1147
---
 lib/manager/npm/monorepos.js                    | 3 ++-
 lib/workers/dep-type/index.js                   | 8 +++++---
 test/manager/__snapshots__/resolve.spec.js.snap | 6 ------
 test/workers/dep-type/index.spec.js             | 1 +
 4 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/lib/manager/npm/monorepos.js b/lib/manager/npm/monorepos.js
index f20f52f7b2..1d44cf3cad 100644
--- a/lib/manager/npm/monorepos.js
+++ b/lib/manager/npm/monorepos.js
@@ -52,9 +52,10 @@ async function checkMonorepos(config) {
           if (!monorepoPackages.includes(depName)) {
             monorepoPackages.push(depName);
           }
+          packageFile.lerna = true;
         }
       }
     }
   }
-  return { ...config, monorepoPackages, workspaceDir };
+  return { ...config, monorepoPackages };
 }
diff --git a/lib/workers/dep-type/index.js b/lib/workers/dep-type/index.js
index 6707d3d852..bfaab69d76 100644
--- a/lib/workers/dep-type/index.js
+++ b/lib/workers/dep-type/index.js
@@ -27,9 +27,11 @@ async function renovateDepType(packageContent, config) {
       packageContent,
       config.depType
     );
-    deps = deps.filter(
-      dependency => config.monorepoPackages.indexOf(dependency.depName) === -1
-    );
+    if (config.lerna || config.workspaceDir) {
+      deps = deps.filter(
+        dependency => config.monorepoPackages.indexOf(dependency.depName) === -1
+      );
+    }
     logger.debug(`deps length is ${deps.length}`);
     logger.debug({ deps }, `deps`);
   } else if (config.packageFile.endsWith('package.js')) {
diff --git a/test/manager/__snapshots__/resolve.spec.js.snap b/test/manager/__snapshots__/resolve.spec.js.snap
index 0c17b40897..876e0c8a1f 100644
--- a/test/manager/__snapshots__/resolve.spec.js.snap
+++ b/test/manager/__snapshots__/resolve.spec.js.snap
@@ -485,7 +485,6 @@ This PR has been generated by [Renovate Bot](https://renovateapp.com).",
       "message": "Cannot parse package.json (invalid JSON)",
     },
   ],
-  "workspaceDir": undefined,
   "yarnrc": null,
 }
 `;
@@ -1189,7 +1188,6 @@ This PR has been generated by [Renovate Bot](https://renovateapp.com).",
   "unstablePattern": null,
   "updateNotScheduled": true,
   "warnings": Array [],
-  "workspaceDir": undefined,
   "yarnrc": null,
 }
 `;
@@ -1684,7 +1682,6 @@ This PR has been generated by [Renovate Bot](https://renovateapp.com).",
   "unstablePattern": null,
   "updateNotScheduled": true,
   "warnings": Array [],
-  "workspaceDir": undefined,
   "yarnrc": null,
 }
 `;
@@ -2180,7 +2177,6 @@ This PR has been generated by [Renovate Bot](https://renovateapp.com).",
   "unstablePattern": null,
   "updateNotScheduled": true,
   "warnings": Array [],
-  "workspaceDir": undefined,
   "yarnrc": null,
 }
 `;
@@ -2665,7 +2661,6 @@ This PR has been generated by [Renovate Bot](https://renovateapp.com).",
   "unstablePattern": null,
   "updateNotScheduled": true,
   "warnings": Array [],
-  "workspaceDir": undefined,
   "yarnrc": null,
 }
 `;
@@ -3159,7 +3154,6 @@ This PR has been generated by [Renovate Bot](https://renovateapp.com).",
   "unstablePattern": null,
   "updateNotScheduled": true,
   "warnings": Array [],
-  "workspaceDir": undefined,
   "yarnrc": null,
 }
 `;
diff --git a/test/workers/dep-type/index.spec.js b/test/workers/dep-type/index.spec.js
index 1cfda35ebd..8bbd571dfa 100644
--- a/test/workers/dep-type/index.spec.js
+++ b/test/workers/dep-type/index.spec.js
@@ -17,6 +17,7 @@ describe('lib/workers/dep-type/index', () => {
         packageFile: 'package.json',
         ignoreDeps: ['a', 'b'],
         monorepoPackages: ['e'],
+        workspaceDir: '.',
       };
     });
     it('returns empty if config is disabled', async () => {
-- 
GitLab