diff --git a/lib/worker.js b/lib/worker.js
index ab3c0271f9c2229e9b025d6ffa2acc2871461287..318176e11a6167f991d624f74d43674309f84a77 100644
--- a/lib/worker.js
+++ b/lib/worker.js
@@ -18,6 +18,7 @@ module.exports = {
   processUpgradesSequentially,
   updateDependency,
   assignDepConfigs,
+  getDepTypeConfig,
 };
 
 // This function manages the queue per-package file
@@ -48,8 +49,15 @@ async function processPackageFile(repoName, packageFile, packageConfig) {
     return;
   }
 
+  const depTypes = config.depTypes.map((depType) => {
+    if (typeof depType === 'string') {
+      return depType;
+    }
+    return depType.depType;
+  });
+
   // Extract all dependencies from the package.json
-  let dependencies = await packageJson.extractDependencies(packageContent, config.depTypes);
+  let dependencies = await packageJson.extractDependencies(packageContent, depTypes);
   // Filter out ignored dependencies
   dependencies =
     dependencies.filter(dependency => config.ignoreDeps.indexOf(dependency.depName) === -1);
@@ -69,7 +77,7 @@ function assignDepConfigs(inputConfig, deps) {
   return deps.map((dep) => {
     const returnDep = Object.assign({}, dep);
     returnDep.config =
-      Object.assign({}, inputConfig);
+      Object.assign({}, inputConfig, getDepTypeConfig(inputConfig.depTypes, dep.depType));
     delete returnDep.config.depTypes;
     delete returnDep.config.enabled;
     delete returnDep.config.onboarding;
@@ -87,6 +95,18 @@ function assignDepConfigs(inputConfig, deps) {
   });
 }
 
+function getDepTypeConfig(depTypes, depTypeName) {
+  let depTypeConfig = {};
+  if (depTypes) {
+    depTypes.forEach((depType) => {
+      if (typeof depType !== 'string' && depType.depType === depTypeName) {
+        depTypeConfig = depType;
+      }
+    });
+  }
+  return depTypeConfig;
+}
+
 async function maintainYarnLock(inputConfig) {
   const packageContent = await inputConfig.api.getFileContent(inputConfig.packageFile);
   const yarnLockFileName = path.join(path.dirname(inputConfig.packageFile), 'yarn.lock');
diff --git a/test/__snapshots__/worker.spec.js.snap b/test/__snapshots__/worker.spec.js.snap
index 9b14d6629d0d1f6050c58bbb88e2f801e565330e..50e6f885d4e22382cb191bdc70220c0609b94a33 100644
--- a/test/__snapshots__/worker.spec.js.snap
+++ b/test/__snapshots__/worker.spec.js.snap
@@ -1,5 +1,32 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
+exports[`worker assignDepConfigs(inputConfig, deps) handles depType config with override 1`] = `
+Array [
+  Object {
+    "config": Object {
+      "depType": "dependencies",
+      "foo": "beta",
+    },
+    "depName": "a",
+    "depType": "dependencies",
+  },
+]
+`;
+
+exports[`worker assignDepConfigs(inputConfig, deps) handles depType config without override 1`] = `
+Array [
+  Object {
+    "config": Object {
+      "alpha": "beta",
+      "depType": "dependencies",
+      "foo": "bar",
+    },
+    "depName": "a",
+    "depType": "dependencies",
+  },
+]
+`;
+
 exports[`worker assignDepConfigs(inputConfig, deps) handles multiple deps 1`] = `
 Array [
   Object {
diff --git a/test/worker.spec.js b/test/worker.spec.js
index db955a022759680ad8fb203d6d8f3f0f66afc383..93efa892c7e4061f6e4b1267aeab743a29f46872 100644
--- a/test/worker.spec.js
+++ b/test/worker.spec.js
@@ -134,5 +134,67 @@ describe('worker', () => {
       const updatedDeps = worker.assignDepConfigs(config, deps);
       expect(updatedDeps).toMatchSnapshot();
     });
+    it('handles depType config without override', () => {
+      config.foo = 'bar';
+      config.depTypes = [{
+        depType: 'dependencies',
+        alpha: 'beta',
+      }];
+      deps.push({
+        depName: 'a',
+        depType: 'dependencies',
+      });
+      const updatedDeps = worker.assignDepConfigs(config, deps);
+      expect(updatedDeps).toMatchSnapshot();
+    });
+    it('handles depType config with override', () => {
+      config.foo = 'bar';
+      config.depTypes = [{
+        depType: 'dependencies',
+        foo: 'beta',
+      }];
+      deps.push({
+        depName: 'a',
+        depType: 'dependencies',
+      });
+      const updatedDeps = worker.assignDepConfigs(config, deps);
+      expect(updatedDeps).toMatchSnapshot();
+    });
+  });
+  describe('getDepTypeConfig(depTypes, depTypeName)', () => {
+    it('handles empty depTypes', () => {
+      const depTypeConfig = worker.getDepTypeConfig([], 'dependencies');
+      expect(depTypeConfig).toMatchObject({});
+    });
+    it('handles all strings', () => {
+      const depTypes = ['dependencies', 'devDependencies'];
+      const depTypeConfig = worker.getDepTypeConfig(depTypes, 'dependencies');
+      expect(depTypeConfig).toMatchObject({});
+    });
+    it('handles missed object', () => {
+      const depTypes = [
+        'dependencies',
+        {
+          depType: 'devDependencies',
+          foo: 'bar',
+        },
+      ];
+      const depTypeConfig = worker.getDepTypeConfig(depTypes, 'dependencies');
+      expect(depTypeConfig).toMatchObject({});
+    });
+    it('handles hit object', () => {
+      const depTypes = [
+        {
+          depType: 'dependencies',
+          foo: 'bar',
+        },
+        'devDependencies',
+      ];
+      const depTypeConfig = worker.getDepTypeConfig(depTypes, 'dependencies');
+      const expectedResult = {
+        foo: 'bar',
+      };
+      expect(depTypeConfig).toMatchObject(expectedResult);
+    });
   });
 });