Skip to content

remove command corrupts composer.json when custom packages are defined #3716

@derhasi

Description

@derhasi

Problem

When a custom package ist defined, composer remove seems to have a problem with removing the right part of the composer.json. It seems like the failure is located in Composer\Json\JsonManipulator::removeSubNode.

{
  "description": "Composer template for Drupal projects",
  "repositories": [
    {
      "type": "package",
      "package": {
        "name": "custom/package",
        "type": "metapackage",
        "version": "1.0.0",
        "require": {
          "derhasi/tempdirectory": "0.1.4"
        }
      }
    }
  ],
  "require": {
    "custom/package": "1.0.0",
    "derhasi/tempdirectory": "0.1.4",
    "rkr/wildcards": "~1.0"
  },
  "require-dev": {
    "composer/composer": "dev-master"
  }
}

How to reproduce:

  1. Use composer.json from above (or clone gist https://gist.github.com/derhasi/24f46ec9f74af9a6a83f)
  2. composer install
  3. ./vendor/bin/composer remove rkr/wildcards

Result

After that the composer.json's require was replaced by the one from the custom package:

Corrupt composer.json diff

The full result composer.json is

{
  "description": "Composer template for Drupal projects",
  "repositories": [
    {
      "type": "package",
      "package": {
        "name": "custom/package",
        "type": "metapackage",
        "version": "1.0.0",
        "require": {
          "derhasi/tempdirectory": "0.1.4"
        }
      }
    }
  ],
  "require": {
          "derhasi/tempdirectory": "0.1.4"
        },
  "require-dev": {
    "composer/composer": "dev-master"
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions