diff --git a/lib/manager/bazel/extract.js b/lib/manager/bazel/extract.js
index 8c145090475c99cad09d1867357233a34a0b01e0..b5111bb06965fcdfe7f6c3cd0754be1b8c494c4c 100644
--- a/lib/manager/bazel/extract.js
+++ b/lib/manager/bazel/extract.js
@@ -2,13 +2,13 @@ module.exports = {
   extractDependencies,
 };
 
-function extractDependencies(packageContent) {
-  const definitions = packageContent.match(
+function extractDependencies(content) {
+  const definitions = content.match(
     /(git_repository|http_archive)\(([\s\S]*?)\n\)\n?/g
   );
   if (!definitions) {
     logger.debug('No matching WORKSPACE definitions found');
-    return [];
+    return null;
   }
   logger.debug({ definitions }, `Found ${definitions.length} definitions`);
   const deps = [];
@@ -72,5 +72,8 @@ function extractDependencies(packageContent) {
       );
     }
   });
-  return deps;
+  if (!deps.length) {
+    return null;
+  }
+  return { deps };
 }
diff --git a/lib/manager/buildkite/extract.js b/lib/manager/buildkite/extract.js
index 6445eb57191bc462a38f296a82021fd9b3c855c4..2d3a4bf7d86797be1d52831b380ac09d2dd9b9a8 100644
--- a/lib/manager/buildkite/extract.js
+++ b/lib/manager/buildkite/extract.js
@@ -21,7 +21,6 @@ function extractDependencies(content) {
           lineNumber += 1;
           const [, depName, currentVersion] = depLineMatch;
           deps.push({
-            depType: 'plugins',
             lineNumber,
             depName,
             currentVersion,
@@ -35,5 +34,8 @@ function extractDependencies(content) {
       'Error extracting buildkite plugins'
     );
   }
-  return deps;
+  if (!deps.length) {
+    return null;
+  }
+  return { deps };
 }
diff --git a/lib/manager/circleci/extract.js b/lib/manager/circleci/extract.js
index 151784b4ae6f3ee8f58fe3f426e57922e6cbd951..d163f9487e240b642bee1bb7dcb94d0ef32b37d7 100644
--- a/lib/manager/circleci/extract.js
+++ b/lib/manager/circleci/extract.js
@@ -25,7 +25,6 @@ function extractDependencies(content) {
         'CircleCI docker image'
       );
       deps.push({
-        depType: 'CircleCI',
         lineNumber,
         currentFrom,
         changeLogFromVersion: currentFrom,
@@ -39,5 +38,8 @@ function extractDependencies(content) {
     }
     lineNumber += 1;
   }
-  return deps;
+  if (!deps.length) {
+    return null;
+  }
+  return { deps };
 }
diff --git a/lib/manager/docker-compose/extract.js b/lib/manager/docker-compose/extract.js
index 81ed25ae00d7de8284ca42c942cc6aa070abdc6a..a1f65125c09d62a9174dcbedcb6ec83b3c9190d6 100644
--- a/lib/manager/docker-compose/extract.js
+++ b/lib/manager/docker-compose/extract.js
@@ -6,7 +6,7 @@ module.exports = {
 
 function extractDependencies(content) {
   logger.debug('docker-compose.extractDependencies()');
-  const deps = [];
+  let deps = [];
   let lineNumber = 0;
   for (const line of content.split('\n')) {
     const match = line.match(/^\s*image:\s*'?"?([^\s'"]+)'?"?\s*$/);
@@ -25,7 +25,6 @@ function extractDependencies(content) {
         'Docker Compose image'
       );
       deps.push({
-        depType: 'Docker Compose',
         lineNumber,
         currentFrom,
         currentDepTagDigest,
@@ -38,5 +37,9 @@ function extractDependencies(content) {
     }
     lineNumber += 1;
   }
-  return deps.filter(dep => !(dep.currentTag && dep.currentTag.includes('${')));
+  deps = deps.filter(dep => !(dep.currentTag && dep.currentTag.includes('${')));
+  if (!deps.length) {
+    return null;
+  }
+  return { deps };
 }
diff --git a/lib/manager/docker/extract.js b/lib/manager/docker/extract.js
index a5a660afa1f0d9ba15767ae5c0ac469f87c0bfdf..ac2c7cab88876e8478ce3516cb70b5c4a6006e7e 100644
--- a/lib/manager/docker/extract.js
+++ b/lib/manager/docker/extract.js
@@ -40,7 +40,7 @@ function extractDependencies(content) {
   if (!fromMatches.length) {
     logger.info('No FROM found');
     logger.debug({ content });
-    return [];
+    return null;
   }
   logger.debug({ fromMatches }, 'Found matches');
   const stageNames = [];
@@ -67,7 +67,6 @@ function extractDependencies(content) {
       logger.debug({ currentFrom }, 'Skipping alias FROM');
     } else {
       deps.push({
-        depType: 'Dockerfile',
         fromLine,
         fromPrefix,
         currentFrom,
@@ -81,5 +80,8 @@ function extractDependencies(content) {
       });
     }
   });
-  return deps;
+  if (!deps.length) {
+    return null;
+  }
+  return { deps };
 }
diff --git a/lib/manager/meteor/extract.js b/lib/manager/meteor/extract.js
index 393a4f286a850c215ce7ef1f8cfdb9908bf771ce..8e3426fc4a3878f774f52f078d75de9b54c816ff 100644
--- a/lib/manager/meteor/extract.js
+++ b/lib/manager/meteor/extract.js
@@ -2,11 +2,14 @@ module.exports = {
   extractDependencies,
 };
 
-function extractDependencies(packageContent) {
+function extractDependencies(content) {
   let deps = [];
+  const npmDepends = content.match(/Npm\.depends\({([\s\S]*?)}\);/);
+  if (!npmDepends) {
+    return null;
+  }
   try {
-    deps = packageContent
-      .match(/Npm\.depends\({([\s\S]*?)}\);/)[1]
+    deps = npmDepends[1]
       .replace(/(\s|\\n|\\t|'|")/g, '')
       .split(',')
       .map(dep => dep.trim())
@@ -16,17 +19,20 @@ function extractDependencies(packageContent) {
         const [depName, currentVersion] = arr;
         // istanbul ignore if
         if (!(depName && currentVersion)) {
-          logger.warn({ packageContent }, 'Incomplete npm.depends match');
+          logger.warn({ content }, 'Incomplete npm.depends match');
         }
         return {
-          depType: 'npmDepends',
           depName,
           currentVersion,
         };
       })
       .filter(dep => dep.depName && dep.currentVersion);
-  } catch (err) {
-    logger.warn({ packageContent }, 'Failed to parse meteor package.js');
+  } catch (err) /* istanbul ignore next */ {
+    logger.warn({ content }, 'Failed to parse meteor package.js');
+  }
+  // istanbul ignore if
+  if (!deps.length) {
+    return null;
   }
-  return deps;
+  return { deps };
 }
diff --git a/lib/manager/npm/extract.js b/lib/manager/npm/extract.js
index e986541fc808486a612aafb6dfaebf1e56688de6..fb93f555cbcca90e4b663220109d3b7f632d95a1 100644
--- a/lib/manager/npm/extract.js
+++ b/lib/manager/npm/extract.js
@@ -12,7 +12,7 @@ function extractDependencies(packageJson, config) {
   const depNames = packageJson[depType]
     ? Object.keys(packageJson[depType])
     : [];
-  return depNames
+  const deps = depNames
     .map(depName => {
       const currentVersion = packageJson[depType][depName]
         ? `${packageJson[depType][depName]}`.trim().replace(/^=/, '')
@@ -58,4 +58,5 @@ function extractDependencies(packageJson, config) {
       };
     })
     .filter(dep => dep.currentVersion);
+  return { deps };
 }
diff --git a/lib/manager/nvm/extract.js b/lib/manager/nvm/extract.js
index 9d2111943345bc66b17527b0cc451a9146a30bb2..4c0af583bfc6bf3ffeb9cca5ce4ef8e9dbf04401 100644
--- a/lib/manager/nvm/extract.js
+++ b/lib/manager/nvm/extract.js
@@ -2,12 +2,12 @@ module.exports = {
   extractDependencies,
 };
 
-function extractDependencies(packageContent) {
-  return [
+function extractDependencies(content) {
+  const deps = [
     {
       depName: 'node',
-      depType: '.nvmrc',
-      currentVersion: packageContent.trim(),
+      currentVersion: content.trim(),
     },
   ];
+  return { deps };
 }
diff --git a/lib/manager/pip_requirements/extract.js b/lib/manager/pip_requirements/extract.js
index 1d55b22e63c03ca0c5ae3913b516546e6515cd83..534c72639ff5cb79079c3a6ff7a4484120f2e71d 100644
--- a/lib/manager/pip_requirements/extract.js
+++ b/lib/manager/pip_requirements/extract.js
@@ -6,7 +6,7 @@ module.exports = {
   extractDependencies,
 };
 
-function extractDependencies(fileContent) {
+function extractDependencies(content) {
   logger.debug('pip_requirements.extractDependencies()');
   // TODO: for now we only support semver, but we need better support for python versions
   // see https://github.com/pypa/packaging/blob/master/packaging/version.py
@@ -15,18 +15,21 @@ function extractDependencies(fileContent) {
     `^${packagePattern}==([0-9]+\\.[0-9]+\\.[0-9]+)$`,
     'g'
   );
-  return fileContent
+  const deps = content
     .split('\n')
     .map((line, lineNumber) => {
       const matches = regex.exec(line);
       return (
         matches && {
           depName: matches[1],
-          depType: 'python',
           currentVersion: matches[2],
           lineNumber,
         }
       );
     })
     .filter(Boolean);
+  if (!deps.length) {
+    return null;
+  }
+  return { deps };
 }
diff --git a/lib/manager/travis/extract.js b/lib/manager/travis/extract.js
index 19f8bc860b76d452b8a4d4c37d88edf2683d43ba..866a5200e17e70fb4935766173436add9b2cb1b1 100644
--- a/lib/manager/travis/extract.js
+++ b/lib/manager/travis/extract.js
@@ -4,16 +4,19 @@ module.exports = {
   extractDependencies,
 };
 
-function extractDependencies(packageContent) {
-  const doc = yaml.safeLoad(packageContent);
+function extractDependencies(content) {
+  const doc = yaml.safeLoad(content);
+  let deps = [];
   if (doc && Array.isArray(doc.node_js)) {
-    return [
+    deps = [
       {
         depName: 'node',
-        depType: '.travis.yml',
         currentVersion: doc.node_js,
       },
     ];
   }
-  return [];
+  if (!deps.length) {
+    return null;
+  }
+  return { deps };
 }
diff --git a/lib/workers/package-file/dep-type.js b/lib/workers/package-file/dep-type.js
index fc045a5f26d6ccd114bd242fbf7483a0af917c5d..4758e1a172f18df8ff1887ad2e1d6013346a8ade 100644
--- a/lib/workers/package-file/dep-type.js
+++ b/lib/workers/package-file/dep-type.js
@@ -20,7 +20,13 @@ async function renovateDepType(packageContent, config) {
     logger.debug('depType is disabled');
     return [];
   }
-  let deps = await extractDependencies(packageContent, config);
+  const res = await extractDependencies(packageContent, config);
+  let deps;
+  if (res) {
+    ({ deps } = res);
+  } else {
+    deps = [];
+  }
   if (config.lerna || config.workspaces || config.workspaceDir) {
     deps = deps.filter(
       dependency => config.monorepoPackages.indexOf(dependency.depName) === -1
diff --git a/test/manager/bazel/extract.spec.js b/test/manager/bazel/extract.spec.js
index 4f9f1a824e489111f9f6b022ce450f28a08511a0..b635500b776bd02cfdf704e8aa84c667c213ac38 100644
--- a/test/manager/bazel/extract.spec.js
+++ b/test/manager/bazel/extract.spec.js
@@ -12,20 +12,20 @@ describe('lib/manager/bazel/extract', () => {
     beforeEach(() => {
       config = {};
     });
-    it('returns empty if fails to pass', () => {
+    it('returns empty if fails to parse', () => {
       const res = extractDependencies('blahhhhh:foo:@what\n', config);
-      expect(res).toEqual([]);
+      expect(res).toBe(null);
     });
     it('returns empty if cannot parse dependency', () => {
       const res = extractDependencies(
         'git_repository(\n  nothing\n)\n',
         config
       );
-      expect(res).toEqual([]);
+      expect(res).toBe(null);
     });
     it('extracts multiple types of dependencies', () => {
       const res = extractDependencies(workspaceFile, config);
-      expect(res).toMatchSnapshot();
+      expect(res.deps).toMatchSnapshot();
     });
   });
 });
diff --git a/test/manager/buildkite/__snapshots__/extract.spec.js.snap b/test/manager/buildkite/__snapshots__/extract.spec.js.snap
index 030fecf4c172ab5b5a18d45c0eae1f8a0e4c8888..09563294bac39b0297a67cb913fe397c621814fa 100644
--- a/test/manager/buildkite/__snapshots__/extract.spec.js.snap
+++ b/test/manager/buildkite/__snapshots__/extract.spec.js.snap
@@ -5,13 +5,11 @@ Array [
   Object {
     "currentVersion": "v1.3.2",
     "depName": "docker-compose",
-    "depType": "plugins",
     "lineNumber": 4,
   },
   Object {
     "currentVersion": "v1.3.2",
     "depName": "docker-compose",
-    "depType": "plugins",
     "lineNumber": 15,
   },
 ]
@@ -22,7 +20,6 @@ Array [
   Object {
     "currentVersion": "v2.0.0",
     "depName": "detect-clowns",
-    "depType": "plugins",
     "lineNumber": 2,
   },
 ]
diff --git a/test/manager/buildkite/extract.spec.js b/test/manager/buildkite/extract.spec.js
index 6afd9f27dec3ec4c59f6cd11861eca256e4a828a..cd4c1d5ff49c3ae129ab9fce034a578328161566 100644
--- a/test/manager/buildkite/extract.spec.js
+++ b/test/manager/buildkite/extract.spec.js
@@ -18,13 +18,16 @@ describe('lib/manager/buildkite/extract', () => {
     beforeEach(() => {
       config = {};
     });
+    it('returns null for empty', () => {
+      expect(extractDependencies('nothing here', config)).toBe(null);
+    });
     it('extracts simple single plugin', () => {
-      const res = extractDependencies(pipeline1, config);
+      const res = extractDependencies(pipeline1, config).deps;
       expect(res).toMatchSnapshot();
       expect(res).toHaveLength(1);
     });
     it('extracts multiple plugins in same file', () => {
-      const res = extractDependencies(pipeline2, config);
+      const res = extractDependencies(pipeline2, config).deps;
       expect(res).toMatchSnapshot();
       expect(res).toHaveLength(2);
     });
diff --git a/test/manager/circleci/__snapshots__/extract.spec.js.snap b/test/manager/circleci/__snapshots__/extract.spec.js.snap
index 73b666d312974fc4dbadee071c14ca999c639428..e5591adca821d225adfbee9e0bd9d8db396cfcce 100644
--- a/test/manager/circleci/__snapshots__/extract.spec.js.snap
+++ b/test/manager/circleci/__snapshots__/extract.spec.js.snap
@@ -10,7 +10,6 @@ Array [
     "currentFrom": "node",
     "currentTag": undefined,
     "depName": "node",
-    "depType": "CircleCI",
     "dockerRegistry": undefined,
     "lineNumber": 12,
   },
@@ -22,7 +21,6 @@ Array [
     "currentFrom": "node:4",
     "currentTag": "4",
     "depName": "node",
-    "depType": "CircleCI",
     "dockerRegistry": undefined,
     "lineNumber": 57,
   },
@@ -34,7 +32,6 @@ Array [
     "currentFrom": "node:6",
     "currentTag": "6",
     "depName": "node",
-    "depType": "CircleCI",
     "dockerRegistry": undefined,
     "lineNumber": 61,
   },
@@ -46,7 +43,6 @@ Array [
     "currentFrom": "node:8.9.0",
     "currentTag": "8.9.0",
     "depName": "node",
-    "depType": "CircleCI",
     "dockerRegistry": undefined,
     "lineNumber": 65,
   },
diff --git a/test/manager/circleci/extract.spec.js b/test/manager/circleci/extract.spec.js
index 4bb0c02b46ca502cd53824f2acf2c6b1e374afbf..bfd13a5e924f8d719e93192f39a653cb6b21cb84 100644
--- a/test/manager/circleci/extract.spec.js
+++ b/test/manager/circleci/extract.spec.js
@@ -11,10 +11,13 @@ describe('lib/manager/circleci/extract', () => {
     beforeEach(() => {
       config = {};
     });
+    it('returns null for empty', () => {
+      expect(extractDependencies('nothing here', config)).toBe(null);
+    });
     it('extracts multiple image lines', () => {
       const res = extractDependencies(yamlFile, config);
-      expect(res).toMatchSnapshot();
-      expect(res).toHaveLength(4);
+      expect(res.deps).toMatchSnapshot();
+      expect(res.deps).toHaveLength(4);
     });
   });
 });
diff --git a/test/manager/docker-compose/__snapshots__/extract.spec.js.snap b/test/manager/docker-compose/__snapshots__/extract.spec.js.snap
index 37e53650f76101bc8fc697052c63238ff9262386..742c0d62287891b3b3dff4917afd596b0ec102b8 100644
--- a/test/manager/docker-compose/__snapshots__/extract.spec.js.snap
+++ b/test/manager/docker-compose/__snapshots__/extract.spec.js.snap
@@ -9,7 +9,6 @@ Array [
     "currentFrom": "quay.io/something/redis:alpine",
     "currentTag": "alpine",
     "depName": "something/redis",
-    "depType": "Docker Compose",
     "dockerRegistry": "quay.io",
     "lineNumber": 4,
   },
@@ -20,7 +19,6 @@ Array [
     "currentFrom": "postgres:9.4.0",
     "currentTag": "9.4.0",
     "depName": "postgres",
-    "depType": "Docker Compose",
     "dockerRegistry": undefined,
     "lineNumber": 18,
   },
@@ -31,7 +29,6 @@ Array [
     "currentFrom": "dockersamples/examplevotingapp_vote:before",
     "currentTag": "before",
     "depName": "dockersamples/examplevotingapp_vote",
-    "depType": "Docker Compose",
     "dockerRegistry": undefined,
     "lineNumber": 28,
   },
@@ -42,7 +39,6 @@ Array [
     "currentFrom": "dockersamples/examplevotingapp_result:before",
     "currentTag": "before",
     "depName": "dockersamples/examplevotingapp_result",
-    "depType": "Docker Compose",
     "dockerRegistry": undefined,
     "lineNumber": 43,
   },
@@ -53,7 +49,6 @@ Array [
     "currentFrom": "dockersamples/examplevotingapp_worker",
     "currentTag": undefined,
     "depName": "dockersamples/examplevotingapp_worker",
-    "depType": "Docker Compose",
     "dockerRegistry": undefined,
     "lineNumber": 59,
   },
@@ -64,7 +59,6 @@ Array [
     "currentFrom": "dockersamples/visualizer:stable",
     "currentTag": "stable",
     "depName": "dockersamples/visualizer",
-    "depType": "Docker Compose",
     "dockerRegistry": undefined,
     "lineNumber": 76,
   },
diff --git a/test/manager/docker-compose/extract.spec.js b/test/manager/docker-compose/extract.spec.js
index c2062d48eb3a3a39ffc3d63a964b87a2c37d2332..ff2d129106b3ea2791a4f7edad9ba0e0498f6e54 100644
--- a/test/manager/docker-compose/extract.spec.js
+++ b/test/manager/docker-compose/extract.spec.js
@@ -14,10 +14,13 @@ describe('lib/manager/docker-compose/extract', () => {
     beforeEach(() => {
       config = {};
     });
+    it('returns null for empty', () => {
+      expect(extractDependencies('nothing here', config)).toBe(null);
+    });
     it('extracts multiple image lines', () => {
       const res = extractDependencies(yamlFile, config);
-      expect(res).toMatchSnapshot();
-      expect(res).toHaveLength(6);
+      expect(res.deps).toMatchSnapshot();
+      expect(res.deps).toHaveLength(6);
     });
   });
 });
diff --git a/test/manager/docker/__snapshots__/extract.spec.js.snap b/test/manager/docker/__snapshots__/extract.spec.js.snap
index f7cb2da2b454d1fbe53ed757c11b761edb95dbcd..0919754ae82ff700862cb98ac029c6d960cfb045 100644
--- a/test/manager/docker/__snapshots__/extract.spec.js.snap
+++ b/test/manager/docker/__snapshots__/extract.spec.js.snap
@@ -9,7 +9,6 @@ Array [
     "currentFrom": "node:6.12.3",
     "currentTag": "6.12.3",
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": undefined,
     "fromLine": "FROM node:6.12.3 as frontend",
     "fromPrefix": "FROM",
@@ -22,7 +21,6 @@ Array [
     "currentFrom": "python:3.6-slim",
     "currentTag": "3.6-slim",
     "depName": "python",
-    "depType": "Dockerfile",
     "dockerRegistry": undefined,
     "fromLine": "FROM python:3.6-slim",
     "fromPrefix": "FROM",
@@ -40,7 +38,6 @@ Array [
     "currentFrom": "registry.allmine.info:5005/node:8.7.0",
     "currentTag": "8.7.0",
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": "registry.allmine.info:5005",
     "fromLine": "FROM    registry.allmine.info:5005/node:8.7.0",
     "fromPrefix": "FROM",
@@ -58,7 +55,6 @@ Array [
     "currentFrom": "node",
     "currentTag": undefined,
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": undefined,
     "fromLine": "FROM node",
     "fromPrefix": "FROM",
@@ -76,7 +72,6 @@ Array [
     "currentFrom": "registry2.something.info/node:8",
     "currentTag": "8",
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": "registry2.something.info",
     "fromLine": "FROM registry2.something.info/node:8",
     "fromPrefix": "FROM",
@@ -94,7 +89,6 @@ Array [
     "currentFrom": "registry2.something.info/someaccount/node:8",
     "currentTag": "8",
     "depName": "someaccount/node",
-    "depType": "Dockerfile",
     "dockerRegistry": "registry2.something.info",
     "fromLine": "FROM registry2.something.info/someaccount/node:8",
     "fromPrefix": "FROM",
@@ -112,7 +106,6 @@ Array [
     "currentFrom": "registry2.something.info:5005/node:8",
     "currentTag": "8",
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": "registry2.something.info:5005",
     "fromLine": "FROM registry2.something.info:5005/node:8",
     "fromPrefix": "FROM",
@@ -130,7 +123,6 @@ Array [
     "currentFrom": "node@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063",
     "currentTag": undefined,
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": undefined,
     "fromLine": "FROM node@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063",
     "fromPrefix": "FROM",
@@ -148,7 +140,6 @@ Array [
     "currentFrom": "node:8.9.0-alpine",
     "currentTag": "8.9.0-alpine",
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": undefined,
     "fromLine": "FROM node:8.9.0-alpine as base",
     "fromPrefix": "FROM",
@@ -166,7 +157,6 @@ Array [
     "currentFrom": "node",
     "currentTag": undefined,
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": undefined,
     "fromLine": "FROM node",
     "fromPrefix": "FROM",
@@ -184,7 +174,6 @@ Array [
     "currentFrom": "mynamespace/node:8",
     "currentTag": "8",
     "depName": "mynamespace/node",
-    "depType": "Dockerfile",
     "dockerRegistry": undefined,
     "fromLine": "FROM mynamespace/node:8",
     "fromPrefix": "FROM",
@@ -202,7 +191,6 @@ Array [
     "currentFrom": "node:8.9.0-alpine",
     "currentTag": "8.9.0-alpine",
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": undefined,
     "fromLine": "FROM node:8.9.0-alpine",
     "fromPrefix": "FROM",
@@ -220,7 +208,6 @@ Array [
     "currentFrom": "node:8.9.0@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063",
     "currentTag": "8.9.0",
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": undefined,
     "fromLine": "FROM node:8.9.0@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063",
     "fromPrefix": "FROM",
@@ -238,7 +225,6 @@ Array [
     "currentFrom": "node",
     "currentTag": undefined,
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": undefined,
     "fromLine": "From node",
     "fromPrefix": "From",
@@ -256,7 +242,6 @@ Array [
     "currentFrom": "node:6.12.3",
     "currentTag": "6.12.3",
     "depName": "node",
-    "depType": "Dockerfile",
     "dockerRegistry": undefined,
     "fromLine": "FROM node:6.12.3 as frontend",
     "fromPrefix": "FROM",
diff --git a/test/manager/docker/extract.spec.js b/test/manager/docker/extract.spec.js
index c44e17038fa9ecb3b195e654b51407d9071c7e70..77d4e48aa5233d610c3da1c7e17a1e9eacb2e24f 100644
--- a/test/manager/docker/extract.spec.js
+++ b/test/manager/docker/extract.spec.js
@@ -7,36 +7,36 @@ describe('lib/manager/docker/extract', () => {
       config = {};
     });
     it('handles naked dep', () => {
-      const res = extractDependencies('FROM node\n', config);
+      const res = extractDependencies('FROM node\n', config).deps;
       expect(res).toMatchSnapshot();
     });
     it('is case insensitive', () => {
-      const res = extractDependencies('From node\n', config);
+      const res = extractDependencies('From node\n', config).deps;
       expect(res).toMatchSnapshot();
     });
     it('handles tag', () => {
-      const res = extractDependencies('FROM node:8.9.0-alpine\n', config);
+      const res = extractDependencies('FROM node:8.9.0-alpine\n', config).deps;
       expect(res).toMatchSnapshot();
     });
     it('handles digest', () => {
       const res = extractDependencies(
         'FROM node@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063\n',
         config
-      );
+      ).deps;
       expect(res).toMatchSnapshot();
     });
     it('handles tag and digest', () => {
       const res = extractDependencies(
         'FROM node:8.9.0@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063\n',
         config
-      );
+      ).deps;
       expect(res).toMatchSnapshot();
     });
     it('handles from as', () => {
       const res = extractDependencies(
         'FROM node:8.9.0-alpine as base\n',
         config
-      );
+      ).deps;
       expect(res).toMatchSnapshot();
       //  expect(res.currentTag.includes(' ')).toBe(false);
     });
@@ -44,14 +44,14 @@ describe('lib/manager/docker/extract', () => {
       const res = extractDependencies(
         '# some comment\n# another\n\nFROM node\n',
         config
-      );
+      ).deps;
       expect(res).toMatchSnapshot();
     });
     it('handles custom hosts', () => {
       const res = extractDependencies(
         'FROM registry2.something.info/node:8\n',
         config
-      );
+      ).deps;
       expect(res).toMatchSnapshot();
       expect(res[0].dockerRegistry).toEqual('registry2.something.info');
     });
@@ -59,12 +59,12 @@ describe('lib/manager/docker/extract', () => {
       const res = extractDependencies(
         'FROM registry2.something.info:5005/node:8\n',
         config
-      );
+      ).deps;
       expect(res).toMatchSnapshot();
       expect(res[0].dockerRegistry).toEqual('registry2.something.info:5005');
     });
     it('handles namespaced images', () => {
-      const res = extractDependencies('FROM mynamespace/node:8\n', config);
+      const res = extractDependencies('FROM mynamespace/node:8\n', config).deps;
       expect(res).toMatchSnapshot();
       expect(res[0].dockerRegistry).toBeUndefined();
     });
@@ -72,7 +72,7 @@ describe('lib/manager/docker/extract', () => {
       const res = extractDependencies(
         'FROM registry2.something.info/someaccount/node:8\n',
         config
-      );
+      ).deps;
       expect(res).toMatchSnapshot();
       expect(res[0].dockerRegistry).toEqual('registry2.something.info');
       expect(res[0].depName).toEqual('someaccount/node');
@@ -80,26 +80,26 @@ describe('lib/manager/docker/extract', () => {
     it('handles abnoral spacing', () => {
       const res = extractDependencies(
         'FROM    registry.allmine.info:5005/node:8.7.0\n\n'
-      );
+      ).deps;
       expect(res).toMatchSnapshot();
     });
     it('extracts multiple FROM tags', () => {
       const res = extractDependencies(
         'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nFROM python:3.6-slim\n',
         config
-      );
+      ).deps;
       expect(res).toMatchSnapshot();
       expect(res).toHaveLength(2);
     });
     it('skips scratchs', () => {
       const res = extractDependencies('FROM scratch\nADD foo\n', config);
-      expect(res).toHaveLength(0);
+      expect(res).toBe(null);
     });
     it('skips named multistage FROM tags', () => {
       const res = extractDependencies(
         'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nFROM frontend\n',
         config
-      );
+      ).deps;
       expect(res).toMatchSnapshot();
       expect(res).toHaveLength(1);
     });
diff --git a/test/manager/npm/extract.spec.js b/test/manager/npm/extract.spec.js
index a2c31952cc4bb075106b415ecd05c70ecfc18141..a0514565cffb720d9102c6d2aca663db069e4316 100644
--- a/test/manager/npm/extract.spec.js
+++ b/test/manager/npm/extract.spec.js
@@ -21,7 +21,7 @@ describe('manager/npm/extract', () => {
       const extractedDependencies = npmExtract.extractDependencies(
         JSON.parse(input01Content),
         config
-      );
+      ).deps;
       extractedDependencies.should.be.instanceof(Array);
       extractedDependencies.should.have.length(6);
     });
@@ -32,7 +32,7 @@ describe('manager/npm/extract', () => {
       const extractedDependencies = npmExtract.extractDependencies(
         JSON.parse(input01Content),
         config
-      );
+      ).deps;
       extractedDependencies.should.be.instanceof(Array);
       extractedDependencies.should.have.length(4);
     });
@@ -43,7 +43,7 @@ describe('manager/npm/extract', () => {
       const extractedDependencies = npmExtract.extractDependencies(
         JSON.parse(input01Content),
         config
-      );
+      ).deps;
       expect(extractedDependencies).toMatchSnapshot();
       extractedDependencies
         .every(dep => dep.depType && dep.depName && dep.currentVersion)
@@ -56,7 +56,7 @@ describe('manager/npm/extract', () => {
       const extractedDependencies = npmExtract.extractDependencies(
         JSON.parse(input02Content),
         config
-      );
+      ).deps;
       extractedDependencies.should.be.instanceof(Array);
       extractedDependencies.should.have.length(6);
     });
@@ -67,7 +67,7 @@ describe('manager/npm/extract', () => {
       const extractedDependencies = npmExtract.extractDependencies(
         JSON.parse(input02Content),
         config
-      );
+      ).deps;
       extractedDependencies.should.be.instanceof(Array);
       extractedDependencies.should.have.length(0);
     });
@@ -82,7 +82,7 @@ describe('manager/npm/extract', () => {
       const extractedDependencies = npmExtract.extractDependencies(
         { dependencies: { chalk: '^2.0.0', foo: '^1.0.0' } },
         config
-      );
+      ).deps;
       extractedDependencies.should.be.instanceof(Array);
       extractedDependencies.should.have.length(2);
       expect(extractedDependencies[0].lockedVersion).toBeDefined();
@@ -99,7 +99,7 @@ describe('manager/npm/extract', () => {
       const extractedDependencies = npmExtract.extractDependencies(
         { dependencies: { chalk: '^2.0.0', foo: '^1.0.0' } },
         config
-      );
+      ).deps;
       extractedDependencies.should.be.instanceof(Array);
       extractedDependencies.should.have.length(2);
       expect(extractedDependencies[0].lockedVersion).toBeDefined();
@@ -113,7 +113,7 @@ describe('manager/npm/extract', () => {
       const extractedDependencies = npmExtract.extractDependencies(
         { dependencies: { chalk: '^2.0.0', foo: '^1.0.0' } },
         config
-      );
+      ).deps;
       extractedDependencies.should.be.instanceof(Array);
       extractedDependencies.should.have.length(2);
       expect(extractedDependencies[0].lockedVersion).toBeUndefined();
diff --git a/test/manager/nvm/__snapshots__/extract.spec.js.snap b/test/manager/nvm/__snapshots__/extract.spec.js.snap
index 1b783d2a472554b8ecbe40794794c87bc50aca59..74b8f55055473e56c1ff22569bceb4b13185b3ba 100644
--- a/test/manager/nvm/__snapshots__/extract.spec.js.snap
+++ b/test/manager/nvm/__snapshots__/extract.spec.js.snap
@@ -5,7 +5,6 @@ Array [
   Object {
     "currentVersion": "8.4.0",
     "depName": "node",
-    "depType": ".nvmrc",
   },
 ]
 `;
diff --git a/test/manager/nvm/extract.spec.js b/test/manager/nvm/extract.spec.js
index d13e4d2d45346fe88ee23e36090b0a7cd2187458..55f9480e7de8972d716033dbe4f198e3d52b8fec 100644
--- a/test/manager/nvm/extract.spec.js
+++ b/test/manager/nvm/extract.spec.js
@@ -4,7 +4,7 @@ describe('lib/manager/nvm/extract', () => {
   describe('extractDependencies()', () => {
     it('returns a result', () => {
       const res = extractDependencies('8.4.0\n');
-      expect(res).toMatchSnapshot();
+      expect(res.deps).toMatchSnapshot();
     });
   });
 });
diff --git a/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap b/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap
index f54547d2ec5c617261b0bd355f25b59c65117eff..f63886ce8f4661b25249d67aeeba3198d74d2a5a 100644
--- a/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap
+++ b/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap
@@ -5,7 +5,6 @@ Array [
   Object {
     "currentVersion": "0.3.1",
     "depName": "some-package",
-    "depType": "python",
     "lineNumber": 2,
   },
 ]
diff --git a/test/manager/pip_requirements/extract.spec.js b/test/manager/pip_requirements/extract.spec.js
index a775ba5644c486386d3ab2783a870c4e31cc573d..28e4f5c4651fe82fcee053f7dd3a45cadf917342 100644
--- a/test/manager/pip_requirements/extract.spec.js
+++ b/test/manager/pip_requirements/extract.spec.js
@@ -14,8 +14,11 @@ describe('lib/manager/pip_requirements/extract', () => {
     beforeEach(() => {
       config = {};
     });
+    it('returns null for empty', () => {
+      expect(extractDependencies('nothing here', config)).toBe(null);
+    });
     it('extracts dependencies', () => {
-      const res = extractDependencies(requirements, config);
+      const res = extractDependencies(requirements, config).deps;
       expect(res).toMatchSnapshot();
       expect(res).toHaveLength(1);
     });
diff --git a/test/manager/travis/extract.spec.js b/test/manager/travis/extract.spec.js
index 026adea6ef10b9fa9d3a2605022edf4e0ee4d1db..ca8038bac4c23b0d67d30df4af053f563165d7b0 100644
--- a/test/manager/travis/extract.spec.js
+++ b/test/manager/travis/extract.spec.js
@@ -6,9 +6,9 @@ describe('lib/manager/travis/extract', () => {
     beforeEach(() => {
       config = {};
     });
-    it('returns empty if fails to pass', () => {
+    it('returns empty if fails to parse', () => {
       const res = extractDependencies('blahhhhh:foo:@what\n', config);
-      expect(res).toEqual([]);
+      expect(res).toBe(null);
     });
   });
 });
diff --git a/test/workers/package-file/dep-type.spec.js b/test/workers/package-file/dep-type.spec.js
index 327c00582f842c3089ee2fc1dda186e8f76a5421..c92bf6dfdfb5acb76a9371efe3f1612a8d0084b6 100644
--- a/test/workers/package-file/dep-type.spec.js
+++ b/test/workers/package-file/dep-type.spec.js
@@ -27,25 +27,21 @@ describe('lib/workers/package-file/dep-type', () => {
       expect(res).toMatchObject([]);
     });
     it('returns empty if no deps found', async () => {
-      npmExtract.extractDependencies.mockReturnValueOnce([]);
+      npmExtract.extractDependencies.mockReturnValueOnce(null);
       const res = await depTypeWorker.renovateDepType({}, config);
       expect(res).toMatchObject([]);
     });
     it('returns empty if all deps are filtered', async () => {
-      npmExtract.extractDependencies.mockReturnValueOnce([
-        { depName: 'a' },
-        { depName: 'b' },
-        { depName: 'e' },
-      ]);
+      npmExtract.extractDependencies.mockReturnValueOnce({
+        deps: [{ depName: 'a' }, { depName: 'b' }, { depName: 'e' }],
+      });
       const res = await depTypeWorker.renovateDepType({}, config);
       expect(res).toMatchObject([]);
     });
     it('returns combined upgrades if all deps are filtered', async () => {
-      npmExtract.extractDependencies.mockReturnValueOnce([
-        { depName: 'a' },
-        { depName: 'c' },
-        { depName: 'd' },
-      ]);
+      npmExtract.extractDependencies.mockReturnValueOnce({
+        deps: [{ depName: 'a' }, { depName: 'c' }, { depName: 'd' }],
+      });
       const res = await depTypeWorker.renovateDepType({}, config);
       expect(res).toHaveLength(2);
     });