diff --git a/lib/datasource/packagist/index.js b/lib/datasource/packagist/index.js
index 2eff397eea2b9ab54ce1454c477bbd33f5c335af..6ee2be8783302d6cd563d46c2ff5b16212dceb3f 100644
--- a/lib/datasource/packagist/index.js
+++ b/lib/datasource/packagist/index.js
@@ -253,36 +253,17 @@ async function packageLookup(regUrl, name) {
 
 async function getPkgReleases({ lookupName, registryUrls }) {
   logger.trace(`getPkgReleases(${lookupName})`);
-  const regUrls = [];
-  if (registryUrls) {
-    for (const regUrl of registryUrls) {
-      if (regUrl.type === 'composer') {
-        regUrls.push(regUrl.url);
-      } else if (regUrl.type === 'package') {
-        logger.info({ regUrl }, 'Skipping package repository entry');
-      } else if (regUrl['packagist.org'] !== false) {
-        logger.info({ regUrl }, 'Unsupported Packagist registry URL');
-      }
-    }
-  }
-  if (regUrls.length > 0) {
-    logger.debug({ regUrls }, 'Packagist custom registry URLs');
-  }
-  if (
-    !is.nonEmptyArray(registryUrls) ||
-    registryUrls[registryUrls.length - 1]['packagist.org'] !== false
-  ) {
-    regUrls.push('https://packagist.org');
-  } else {
-    logger.debug('Disabling packagist.org');
-  }
 
   let res;
-  for (const regUrl of regUrls) {
-    res = await packageLookup(regUrl, lookupName);
-    if (res) {
-      break;
+  if (is.nonEmptyArray(registryUrls)) {
+    for (const regUrl of registryUrls) {
+      res = await packageLookup(regUrl, lookupName);
+      if (res) {
+        break;
+      }
     }
+  } /* istanbul ignore next */ else {
+    logger.debug({ lookupName }, 'No registryUrls defined');
   }
   return res;
 }
diff --git a/lib/manager/common.ts b/lib/manager/common.ts
index 588773bd97144941fb3894c9a3e6f92e2870c802..9ed94d1035a809ff9c9a14be3ff28f40ae116a6c 100644
--- a/lib/manager/common.ts
+++ b/lib/manager/common.ts
@@ -6,7 +6,7 @@ export type Result<T> = T | Promise<T>;
 export interface ManagerConfig {
   binarySource?: string;
   localDir?: string;
-  registryUrls?: (string | Registry)[];
+  registryUrls?: string[];
 }
 
 export interface ManagerData<T> {
@@ -53,11 +53,6 @@ export interface RangeConfig<T = Record<string, any>> extends ManagerData<T> {
   rangeStrategy: RangeStrategy;
 }
 
-export interface Registry {
-  type?: string;
-  url: string;
-}
-
 export interface NpmLockFiles {
   yarnIntegrity?: boolean;
   yarnLock?: string;
@@ -75,7 +70,7 @@ export interface PackageFile<T = Record<string, any>>
   internalPackages?: string[];
   compatibility?: Record<string, string>;
   datasource?: string;
-  registryUrls?: (string | Registry)[];
+  registryUrls?: string[];
   deps: PackageDependency[];
   ignoreNpmrcFile?: boolean;
   lernaClient?: string;
diff --git a/lib/manager/composer/artifacts.ts b/lib/manager/composer/artifacts.ts
index 8ce8a4bcfc4e19382e9b5a53057f78dc60304985..87655c6a1901e59ab643212480dac20090e2028c 100644
--- a/lib/manager/composer/artifacts.ts
+++ b/lib/manager/composer/artifacts.ts
@@ -3,7 +3,7 @@ import URL from 'url';
 import fs from 'fs-extra';
 import upath from 'upath';
 import { exec } from '../../util/exec';
-import { UpdateArtifactsConfig, Registry } from '../common';
+import { UpdateArtifactsConfig } from '../common';
 import { logger } from '../../logger';
 import * as hostRules from '../../util/host-rules';
 import { getChildProcessEnv } from '../../util/env';
@@ -61,12 +61,12 @@ export async function updateArtifacts(
     try {
       // istanbul ignore else
       if (is.array(config.registryUrls)) {
-        for (const regUrl of config.registryUrls as Registry[]) {
-          if (regUrl.url) {
-            const { host } = URL.parse(regUrl.url);
+        for (const regUrl of config.registryUrls as string[]) {
+          if (regUrl) {
+            const { host } = URL.parse(regUrl);
             const hostRule = hostRules.find({
               hostType: 'packagist',
-              url: regUrl.url,
+              url: regUrl,
             });
             // istanbul ignore else
             if (hostRule.username && hostRule.password) {
@@ -77,7 +77,7 @@ export async function updateArtifacts(
                 password: hostRule.password,
               };
             } else {
-              logger.debug('No packagist auth found for ' + regUrl.url);
+              logger.debug('No packagist auth found for ' + regUrl);
             }
           }
         }
diff --git a/lib/manager/composer/extract.ts b/lib/manager/composer/extract.ts
index fe985b006400e9f5b0ceb5c733a06e8a753cd845..f115a4356e30e004fb6cf8f86e1a4c634dbbeb79 100644
--- a/lib/manager/composer/extract.ts
+++ b/lib/manager/composer/extract.ts
@@ -1,18 +1,25 @@
 import is from '@sindresorhus/is';
 import { logger } from '../../logger';
 import { api as semverComposer } from '../../versioning/composer';
-import { PackageFile, PackageDependency, Registry } from '../common';
+import { PackageFile, PackageDependency } from '../common';
 
 interface Repo {
   name?: string;
   type: 'composer' | 'git' | 'package' | 'vcs';
-
+  packagist?: boolean;
+  'packagist.org'?: boolean;
   url: string;
 }
 
 interface ComposerConfig {
   type?: string;
-  repositories: Record<string, Repo>;
+  /**
+   * A repositories field can be an array of Repo objects or an object of repoName: Repo
+   * Also it can be a boolean (usually false) to disable packagist.
+   * (Yes this can be confusing, as it is also not properly documented in the composer docs)
+   * See https://getcomposer.org/doc/05-repositories.md#disabling-packagist-org
+   */
+  repositories: Record<string, Repo | boolean> | Repo[];
 
   require: Record<string, string>;
   'require-dev': Record<string, string>;
@@ -29,25 +36,43 @@ interface ComposerConfig {
  * @param registryUrls
  */
 function parseRepositories(
-  repoJson: Record<string, Repo>,
+  repoJson: ComposerConfig['repositories'],
   repositories: Record<string, Repo>,
-  registryUrls: Registry[]
+  registryUrls: string[]
 ) {
   try {
+    let packagist = true;
     Object.entries(repoJson).forEach(([key, repo]) => {
-      const name = is.array(repoJson) ? repo.name : key;
-      switch (repo.type) {
-        case 'vcs':
-        case 'git':
-          // eslint-disable-next-line no-param-reassign
-          repositories[name] = repo;
-          break;
-        default:
-          // TODO: only add required props
-          registryUrls.push(repo);
-          break;
+      if (is.object(repo)) {
+        const name = is.array(repoJson) ? repo.name : key;
+        // eslint-disable-next-line default-case
+        switch (repo.type) {
+          case 'vcs':
+          case 'git':
+            // eslint-disable-next-line no-param-reassign
+            repositories[name] = repo;
+            break;
+          case 'composer':
+            registryUrls.push(repo.url);
+            break;
+          case 'package':
+            logger.info({ url: repo.url }, 'type package is not supported yet');
+        }
+        if (repo.packagist === false || repo['packagist.org'] === false) {
+          packagist = false;
+        }
+      } else if (
+        ['packagist', 'packagist.org'].includes(key) &&
+        repo === false
+      ) {
+        packagist = false;
       }
     });
+    if (packagist) {
+      registryUrls.push('https://packagist.org');
+    } else {
+      logger.debug('Disabling packagist.org');
+    }
   } catch (e) /* istanbul ignore next */ {
     logger.info(
       { repositories: repoJson },
@@ -66,7 +91,7 @@ export async function extractPackageFile(content: string, fileName: string) {
     return null;
   }
   const repositories: Record<string, Repo> = {};
-  const registryUrls: Registry[] = [];
+  const registryUrls: string[] = [];
   const res: PackageFile = { deps: [] };
 
   // handle lockfile
@@ -88,6 +113,8 @@ export async function extractPackageFile(content: string, fileName: string) {
   }
   if (registryUrls.length !== 0) {
     res.registryUrls = registryUrls;
+  } else {
+    logger.warn({ fileName }, 'No registryUrls defined (packagist disabled)');
   }
   const deps = [];
   const depTypes = ['require', 'require-dev'];
diff --git a/lib/manager/pip_requirements/extract.ts b/lib/manager/pip_requirements/extract.ts
index fde9321fbea43874eff9a9aa842528906f6f6214..37efc021630ae3234bb941dd88e37d92b71de4bf 100644
--- a/lib/manager/pip_requirements/extract.ts
+++ b/lib/manager/pip_requirements/extract.ts
@@ -3,12 +3,7 @@ import { RANGE_PATTERN as rangePattern } from '@renovate/pep440/lib/specifier';
 import { logger } from '../../logger';
 import { isSkipComment } from '../../util/ignore';
 import { isValid, isSingleVersion } from '../../versioning/pep440';
-import {
-  ExtractConfig,
-  Registry,
-  PackageDependency,
-  PackageFile,
-} from '../common';
+import { ExtractConfig, PackageDependency, PackageFile } from '../common';
 
 export const packagePattern =
   '[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9._-]*[a-zA-Z0-9]';
@@ -38,7 +33,7 @@ export function extractPackageFile(
       extraUrls.push(extraUrl);
     }
   });
-  let registryUrls: (string | Registry)[] = [];
+  let registryUrls: string[] = [];
   if (indexUrl) {
     // index url in file takes precedence
     registryUrls.push(indexUrl);
diff --git a/test/datasource/packagist.spec.js b/test/datasource/packagist.spec.js
index 8fc2922b6be142166f7d8488aa556438e287e60f..8046ab8a1a6abd1d0f1926d88441d9854813b4db 100644
--- a/test/datasource/packagist.spec.js
+++ b/test/datasource/packagist.spec.js
@@ -30,10 +30,8 @@ describe('datasource/packagist', () => {
         datasource: 'packagist',
         versionScheme: 'composer',
         registryUrls: [
-          {
-            type: 'composer',
-            url: 'https://composer.renovatebot.com',
-          },
+          'https://composer.renovatebot.com',
+          'https://packagist.org',
         ],
       };
       return global.renovateCache.rmAll();
@@ -41,30 +39,7 @@ describe('datasource/packagist', () => {
     it('supports custom registries', async () => {
       config = {
         datasource: 'packagist',
-        registryUrls: [
-          {
-            type: 'composer',
-            url: 'https://composer.renovatebot.com',
-          },
-          {
-            type: 'unknown',
-          },
-          {
-            type: 'package',
-            package: {
-              name: 'abc/def',
-              type: 'wordpress-theme',
-              version: '1.2.6',
-              dist: {
-                type: 'zip',
-                url: 'https://github.com/abc/def/archive/v1.2.6.zip',
-              },
-            },
-          },
-          {
-            'packagist.org': false,
-          },
-        ],
+        registryUrls: ['https://composer.renovatebot.com'],
       };
       const res = await datasource.getPkgReleases({
         ...config,
@@ -236,7 +211,7 @@ describe('datasource/packagist', () => {
       got.mockReturnValueOnce({
         body: JSON.parse(mailchimpJson),
       });
-      delete config.registryUrls;
+      config.registryUrls = ['https://packagist.org'];
       expect(
         await datasource.getPkgReleases({
           ...config,
diff --git a/test/manager/composer/__snapshots__/extract.spec.ts.snap b/test/manager/composer/__snapshots__/extract.spec.ts.snap
index 3b42ee38d9273f4d88771f06f144b390e3ab5b90..a67ddb617b3a644409bab762f98b3765641ae9ad 100644
--- a/test/manager/composer/__snapshots__/extract.spec.ts.snap
+++ b/test/manager/composer/__snapshots__/extract.spec.ts.snap
@@ -532,34 +532,7 @@ Object {
     "composerJsonType": "project",
   },
   "registryUrls": Array [
-    Object {
-      "type": "composer",
-      "url": "https://wpackagist.org",
-    },
-    Object {
-      "package": Object {
-        "dist": Object {
-          "type": "zip",
-          "url": "https://github.com/asha23/wp-seed-timber/archive/v1.2.6.zip",
-        },
-        "name": "asha23/wp-seed-timber",
-        "type": "wordpress-theme",
-        "version": "1.2.6",
-      },
-      "type": "package",
-    },
-    Object {
-      "package": Object {
-        "dist": Object {
-          "type": "zip",
-          "url": "https://github.com/corysimmons/wp-sync-db/archive/1.6.zip",
-        },
-        "name": "wp-sync-db/wp-sync-db",
-        "type": "wordpress-plugin",
-        "version": "1.5",
-      },
-      "type": "package",
-    },
+    "https://wpackagist.org",
   ],
 }
 `;
@@ -593,10 +566,8 @@ Object {
     },
   ],
   "registryUrls": Array [
-    Object {
-      "type": "composer",
-      "url": "https://wpackagist.org",
-    },
+    "https://wpackagist.org",
+    "https://packagist.org",
   ],
 }
 `;
@@ -633,10 +604,7 @@ Object {
     },
   ],
   "registryUrls": Array [
-    Object {
-      "type": "composer",
-      "url": "https://wpackagist.org",
-    },
+    "https://wpackagist.org",
   ],
 }
 `;
@@ -668,10 +636,8 @@ Object {
     },
   ],
   "registryUrls": Array [
-    Object {
-      "type": "composer",
-      "url": "https://wpackagist.org",
-    },
+    "https://wpackagist.org",
+    "https://packagist.org",
   ],
 }
 `;
diff --git a/test/manager/composer/_fixtures/composer1.json b/test/manager/composer/_fixtures/composer1.json
index 84c31421b7735b1c0eeb0d0688e5e74ac8757bd8..1ff679dc98d2629e3673ae77e9a15bedcbc911f1 100644
--- a/test/manager/composer/_fixtures/composer1.json
+++ b/test/manager/composer/_fixtures/composer1.json
@@ -1,74 +1,61 @@
 {
   "autoload": {
-      "psr-0": {
-          "": "src/"
-      }
+    "psr-0": {
+      "": "src/"
+    }
   },
   "require": {
-      "php": ">=5.3.2",
-
-      "symfony/assetic-bundle": "dev-master",
-      "symfony/monolog-bundle": "dev-master",
-      "symfony/swiftmailer-bundle": "dev-master",
-      "symfony/symfony": "2.1.*",
-
-      "doctrine/common": "2.2.2",
-      "doctrine/doctrine-bundle": "dev-master",
-      "doctrine/doctrine-fixtures-bundle": "dev-master",
-      "doctrine/orm": "2.2.x-dev",
-
-      "exercise/elastica-bundle": "dev-master",
-
-      "friendsofsymfony/rest-bundle": "dev-master",
-      "friendsofsymfony/user-bundle": "*",
-
-      "fzaninotto/faker": "*",
-
-      "jms/di-extra-bundle": "1.0.1",
-      "jms/payment-core-bundle": "*",
-      "jms/security-extra-bundle": "1.1.0",
-
-      "knplabs/knp-menu-bundle": "dev-master",
-      "knplabs/knp-paginator-bundle": "dev-master",
-
-      "liip/imagine-bundle": "dev-master",
-
-      "merk/dough-bundle": "dev-master",
-
-      "sensio/distribution-bundle": "dev-master",
-      "sensio/framework-extra-bundle": "dev-master",
-      "sensio/generator-bundle": "dev-master",
-
-      "simplethings/entity-audit-bundle": "dev-master",
-
-      "stof/doctrine-extensions-bundle": "dev-master",
-
-      "twig/extensions": "dev-master"
+    "php": ">=5.3.2",
+    "symfony/assetic-bundle": "dev-master",
+    "symfony/monolog-bundle": "dev-master",
+    "symfony/swiftmailer-bundle": "dev-master",
+    "symfony/symfony": "2.1.*",
+    "doctrine/common": "2.2.2",
+    "doctrine/doctrine-bundle": "dev-master",
+    "doctrine/doctrine-fixtures-bundle": "dev-master",
+    "doctrine/orm": "2.2.x-dev",
+    "exercise/elastica-bundle": "dev-master",
+    "friendsofsymfony/rest-bundle": "dev-master",
+    "friendsofsymfony/user-bundle": "*",
+    "fzaninotto/faker": "*",
+    "jms/di-extra-bundle": "1.0.1",
+    "jms/payment-core-bundle": "*",
+    "jms/security-extra-bundle": "1.1.0",
+    "knplabs/knp-menu-bundle": "dev-master",
+    "knplabs/knp-paginator-bundle": "dev-master",
+    "liip/imagine-bundle": "dev-master",
+    "merk/dough-bundle": "dev-master",
+    "sensio/distribution-bundle": "dev-master",
+    "sensio/framework-extra-bundle": "dev-master",
+    "sensio/generator-bundle": "dev-master",
+    "simplethings/entity-audit-bundle": "dev-master",
+    "stof/doctrine-extensions-bundle": "dev-master",
+    "twig/extensions": "dev-master"
   },
   "require-dev": {
-      "behat/behat": "2.3.*",
-      "behat/behat-bundle": "*",
-      "behat/mink-bundle": "*",
-      "behat/sahi-client": "*",
-      "behat/common-contexts": "*"
+    "behat/behat": "2.3.*",
+    "behat/behat-bundle": "*",
+    "behat/mink-bundle": "*",
+    "behat/sahi-client": "*",
+    "behat/common-contexts": "*"
   },
   "scripts": {
-      "post-install-cmd": [
-          "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
-          "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
-          "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets"
-      ],
-      "post-update-cmd": [
-          "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
-          "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
-          "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets"
-      ]
+    "post-install-cmd": [
+      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
+      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
+      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets"
+    ],
+    "post-update-cmd": [
+      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
+      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
+      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets"
+    ]
   },
   "config": {
-      "bin-dir": "bin"
+    "bin-dir": "bin"
   },
   "extra": {
-      "symfony-app-dir": "app",
-      "symfony-web-dir": "web"
+    "symfony-app-dir": "app",
+    "symfony-web-dir": "web"
   }
 }
diff --git a/test/manager/composer/_fixtures/composer2.json b/test/manager/composer/_fixtures/composer2.json
index 15c540845190dc8e532abacff074b6ec1f0f6987..751e39007c9d36fbee30cd0d47836a3b3550a960 100644
--- a/test/manager/composer/_fixtures/composer2.json
+++ b/test/manager/composer/_fixtures/composer2.json
@@ -1,21 +1,24 @@
 {
   "name": "acme/brilliant-wordpress-site",
   "description": "My brilliant WordPress site",
-  "repositories":[
-      {
-          "type":"composer",
-          "url":"https://wpackagist.org"
-      }
+  "repositories": [
+    {
+      "type": "composer",
+      "url": "https://wpackagist.org"
+    },
+    {
+      "packagist": false
+    }
   ],
   "require": {
-      "aws/aws-sdk-php":"*",
-      "wpackagist-plugin/akismet":"dev-trunk",
-      "wpackagist-plugin/wordpress-seo":">=7.0.2",
-      "wpackagist-theme/hueman":"*"
+    "aws/aws-sdk-php": "*",
+    "wpackagist-plugin/akismet": "dev-trunk",
+    "wpackagist-plugin/wordpress-seo": ">=7.0.2",
+    "wpackagist-theme/hueman": "*"
   },
   "autoload": {
-      "psr-0": {
-          "Acme": "src/"
-      }
+    "psr-0": {
+      "Acme": "src/"
+    }
   }
 }
diff --git a/test/manager/composer/_fixtures/composer3.json b/test/manager/composer/_fixtures/composer3.json
index 3afd092fb99034925b5114619c96f29ec566b64f..5cbe38786403bc12149125ef36efb0def8df0d85 100644
--- a/test/manager/composer/_fixtures/composer3.json
+++ b/test/manager/composer/_fixtures/composer3.json
@@ -1,66 +1,79 @@
 {
-    "name": "asha23/arlo-timber-framework",
-    "type": "project",
-    "license": "MIT",
-    "description": "A Composer Framework to help you get WordPress with Timber up and running in around a minute",
-    "authors": [{
-        "name": "Ash Whiting",
-        "email": "ash_whiting@hotmail.com"
-    }],
-    "keywords": [
-        "Arlo", "wordpress framework", "base theme", "wordpress", "composer", "vagrant", "wp"
-    ],
-    "repositories": {
-        "wp-packagist": {
-            "type": "composer",
-            "url": "https://wpackagist.org"
-        },
-        "theme": {
-            "type": "package",
-            "package": {
-                "name": "asha23/wp-seed-timber",
-                "type": "wordpress-theme",
-                "version": "1.2.6",
-                "dist": {
-                    "type": "zip",
-                    "url": "https://github.com/asha23/wp-seed-timber/archive/v1.2.6.zip"
-                }
-            }
-        },
-		"wp-sync-db": {
-			"type": "package",
-			"package": {
-				"name": "wp-sync-db/wp-sync-db",
-				"type": "wordpress-plugin",
-				"version": "1.5",
-				"dist": {
-					"type": "zip",
-					"url": "https://github.com/corysimmons/wp-sync-db/archive/1.6.zip"
-				}
-			}
-		}
+  "name": "asha23/arlo-timber-framework",
+  "type": "project",
+  "license": "MIT",
+  "description": "A Composer Framework to help you get WordPress with Timber up and running in around a minute",
+  "authors": [
+    {
+      "name": "Ash Whiting",
+      "email": "ash_whiting@hotmail.com"
+    }
+  ],
+  "keywords": [
+    "Arlo",
+    "wordpress framework",
+    "base theme",
+    "wordpress",
+    "composer",
+    "vagrant",
+    "wp"
+  ],
+  "repositories": {
+    "packagist.org": false,
+    "wp-packagist": {
+      "type": "composer",
+      "url": "https://wpackagist.org"
     },
-    "require": {
-        "php": ">=5.5",
-        "composer/installers": "~1.0.12",
-        "johnpbloch/wordpress": "*",
-	    "vlucas/phpdotenv": "^2.0.1",
-	    "oscarotero/env": "^1.0",
-        "wpackagist-plugin/tinymce-advanced": "*",
-        "wpackagist-plugin/acf-content-analysis-for-yoast-seo": "*",
-        "wpackagist-plugin/duplicate-post": "*",
-        "wpackagist-plugin/simple-image-sizes": "*",
-        "wpackagist-plugin/wordpress-seo": "*",
-	    "wpackagist-plugin/timber-library": "*",
-	    "wp-sync-db/wp-sync-db": "*",
-        "asha23/wp-seed-timber": "*"
+    "theme": {
+      "type": "package",
+      "package": {
+        "name": "asha23/wp-seed-timber",
+        "type": "wordpress-theme",
+        "version": "1.2.6",
+        "dist": {
+          "type": "zip",
+          "url": "https://github.com/asha23/wp-seed-timber/archive/v1.2.6.zip"
+        }
+      }
     },
-    "extra": {
-        "installer-paths": {
-            "web/content/plugins/{$name}/": ["type:wordpress-plugin"],
-            "web/content/themes/{$name}/": ["type:wordpress-theme"]
-        },
-        "wordpress-install-dir": "web/wp",
-        "content-install-dir": "web/content"
+    "wp-sync-db": {
+      "type": "package",
+      "package": {
+        "name": "wp-sync-db/wp-sync-db",
+        "type": "wordpress-plugin",
+        "version": "1.5",
+        "dist": {
+          "type": "zip",
+          "url": "https://github.com/corysimmons/wp-sync-db/archive/1.6.zip"
+        }
+      }
     }
+  },
+  "require": {
+    "php": ">=5.5",
+    "composer/installers": "~1.0.12",
+    "johnpbloch/wordpress": "*",
+    "vlucas/phpdotenv": "^2.0.1",
+    "oscarotero/env": "^1.0",
+    "wpackagist-plugin/tinymce-advanced": "*",
+    "wpackagist-plugin/acf-content-analysis-for-yoast-seo": "*",
+    "wpackagist-plugin/duplicate-post": "*",
+    "wpackagist-plugin/simple-image-sizes": "*",
+    "wpackagist-plugin/wordpress-seo": "*",
+    "wpackagist-plugin/timber-library": "*",
+    "wp-sync-db/wp-sync-db": "*",
+    "asha23/wp-seed-timber": "*"
+  },
+  "extra": {
+    "installer-paths": {
+      "web/content/plugins/{$name}/": [
+        "type:wordpress-plugin"
+      ],
+      "web/content/themes/{$name}/": [
+        "type:wordpress-theme"
+      ]
+    },
+    "wordpress-install-dir": "web/wp",
+    "content-install-dir": "web/content"
+  }
 }
diff --git a/test/manager/composer/_fixtures/composer4.json b/test/manager/composer/_fixtures/composer4.json
index 2b9e63280c77a14fdd4b9e1fe07fb509d9bfeb03..89e3d1dd42d7b84129aff0ebbe459ccd728049f6 100644
--- a/test/manager/composer/_fixtures/composer4.json
+++ b/test/manager/composer/_fixtures/composer4.json
@@ -1,30 +1,30 @@
 {
   "name": "acme/git-sources",
   "description": "Fetch Packages via git",
-  "repositories":[
-      {
-          "name": "awesome/vcs",
-          "type":"vcs",
-          "url":"https://my-vcs.example/my-vcs-repo"
-      },
-      {
-          "name": "awesome/git",
-          "type":"git",
-          "url":"https://my-git.example/my-git-repo"
-      },
-      {
-        "type": "composer",
-        "url": "https://wpackagist.org"
-      }
+  "repositories": [
+    {
+      "name": "awesome/vcs",
+      "type": "vcs",
+      "url": "https://my-vcs.example/my-vcs-repo"
+    },
+    {
+      "name": "awesome/git",
+      "type": "git",
+      "url": "https://my-git.example/my-git-repo"
+    },
+    {
+      "type": "composer",
+      "url": "https://wpackagist.org"
+    }
   ],
   "require": {
-      "aws/aws-sdk-php":"*",
-      "awesome/vcs":"dev-trunk",
-      "awesome/git":">=7.0.2"
+    "aws/aws-sdk-php": "*",
+    "awesome/vcs": "dev-trunk",
+    "awesome/git": ">=7.0.2"
   },
   "autoload": {
-      "psr-0": {
-          "Acme": "src/"
-      }
+    "psr-0": {
+      "Acme": "src/"
+    }
   }
 }
diff --git a/test/manager/composer/_fixtures/composer5.json b/test/manager/composer/_fixtures/composer5.json
index 17238d84a8bb0d4aec0e0c15993777f8bb647a78..f8772b459f96780fc255cc4d5ff224cf5b2dda40 100644
--- a/test/manager/composer/_fixtures/composer5.json
+++ b/test/manager/composer/_fixtures/composer5.json
@@ -1,28 +1,28 @@
 {
   "name": "acme/git-sources",
   "description": "Fetch Packages via git",
-  "repositories":{
+  "repositories": {
     "awesome/vcs": {
-          "type":"vcs",
-          "url":"https://my-vcs.example/my-vcs-repo"
-      },
+      "type": "vcs",
+      "url": "https://my-vcs.example/my-vcs-repo"
+    },
     "awesome/git": {
-          "type":"git",
-          "url":"git@my-git.example:my-git-repo"
-      },
-      "wpackagist": {
-        "type": "composer",
-        "url": "https://wpackagist.org"
-      }
+      "type": "git",
+      "url": "git@my-git.example:my-git-repo"
+    },
+    "wpackagist": {
+      "type": "composer",
+      "url": "https://wpackagist.org"
+    }
   },
   "require": {
-      "aws/aws-sdk-php":"*",
-      "awesome/vcs":"dev-trunk",
-      "awesome/git":">=7.0.2"
+    "aws/aws-sdk-php": "*",
+    "awesome/vcs": "dev-trunk",
+    "awesome/git": ">=7.0.2"
   },
   "autoload": {
-      "psr-0": {
-          "Acme": "src/"
-      }
+    "psr-0": {
+      "Acme": "src/"
+    }
   }
 }
diff --git a/test/manager/composer/artifacts.spec.ts b/test/manager/composer/artifacts.spec.ts
index 215b9a5a6176f7da1677e83f1ac73a3dfdd320aa..f6fa92a47f33ce807e70b41b6d5ae7358f5eb6ff 100644
--- a/test/manager/composer/artifacts.spec.ts
+++ b/test/manager/composer/artifacts.spec.ts
@@ -49,11 +49,7 @@ describe('.updateArtifacts()', () => {
     fs.readFile = jest.fn(() => 'Current composer.lock');
     const authConfig = {
       localDir: '/tmp/github/some/repo',
-      registryUrls: [
-        {
-          url: 'https://packagist.renovatebot.com',
-        },
-      ],
+      registryUrls: ['https://packagist.renovatebot.com'],
     };
     hostRules.find.mockReturnValue({
       username: 'some-username',
diff --git a/test/manager/composer/extract.spec.ts b/test/manager/composer/extract.spec.ts
index 380bfb27908e720e33eab97fe8f1f5ec43c7a0a3..1421a7dde49b1a3df93a1f2ef1a4d1f9000619e0 100644
--- a/test/manager/composer/extract.spec.ts
+++ b/test/manager/composer/extract.spec.ts
@@ -52,18 +52,18 @@ describe('lib/manager/composer/extract', () => {
     it('extracts object registryUrls', async () => {
       const res = await extractPackageFile(requirements3, packageFile);
       expect(res).toMatchSnapshot();
-      expect(res.registryUrls).toHaveLength(3);
+      expect(res.registryUrls).toHaveLength(1);
     });
     it('extracts repositories and registryUrls', async () => {
       const res = await extractPackageFile(requirements4, packageFile);
       expect(res).toMatchSnapshot();
-      expect(res.registryUrls).toHaveLength(1);
+      expect(res.registryUrls).toHaveLength(2);
     });
     it('extracts object repositories and registryUrls with lock file', async () => {
       platform.getFile.mockResolvedValue(requirements5Lock);
       const res = await extractPackageFile(requirements5, packageFile);
       expect(res).toMatchSnapshot();
-      expect(res.registryUrls).toHaveLength(1);
+      expect(res.registryUrls).toHaveLength(2);
     });
     it('extracts dependencies with lock file', async () => {
       platform.getFile.mockResolvedValue('some content');
diff --git a/test/workers/repository/process/lookup/index.spec.js b/test/workers/repository/process/lookup/index.spec.js
index c53805d3dd1a7ffc0e6d6505944ed4ad5ac07771..b64facd1ef9470a2750bbe5009966a3c12fcb231 100644
--- a/test/workers/repository/process/lookup/index.spec.js
+++ b/test/workers/repository/process/lookup/index.spec.js
@@ -981,6 +981,7 @@ describe('workers/repository/process/lookup', () => {
       config.datasource = 'packagist';
       config.packageFile = 'composer.json';
       config.currentValue = '1.0.0';
+      config.registryUrls = ['https://packagist.org'];
       nock('https://packagist.org')
         .get('/packages/foo/bar.json')
         .reply(404);