fxpio / composer-asset-plugin

NPM/Bower Dependency Manager for Composer
MIT License
893 stars 156 forks source link

Multiple versions: Dependency on bower-asset/<library>-<version> cannot be resolved. #228

Closed ghost closed 7 years ago

ghost commented 8 years ago

Dear developers,

composer.json:

{
     "require": {
         "bower-asset/angular-1.3.20": "1.3.20",
         "bower-asset/angular-route-1.3.20": "1.3.20"
     }
}

composer update triggers following problem:

Problem 1
   - Installation request for bower-asset/angular-route-1.3.20 1.3.20 -> satisfiable by bower-asset/angular-route-1.3.20[v1.3.20].
   - bower-asset/angular-route-1.3.20 v1.3.20 requires bower-asset/angular 1.3.20 -> no matching package found

Dependency in angular-route's bower.json:

{
    "dependencies": {
        "angular": "1.3.20"
    }
}

Expected behavior: Above dependency of bower-asset/angular-route-1.3.20 should be satisfied by bower-asset/angular-1.3.20.

Best regards.

francoispluchino commented 8 years ago

I just try to install your dependencies with the 1.1.3 version of Composer and 1.2.x-dev version of this plugin, and it's ok:

{
    "require": {
        "bower-asset/angular-1.3.20": "1.3.20",
        "bower-asset/angular-route-1.3.20": "1.3.20"
    }
}
$ composer install --prefer-dist
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing bower-asset/angular-1.3.20 (v1.3.20)
    Downloading: 100%
    Extracting archive

  - Installing bower-asset/angular (v1.3.20)
    Downloading: 100%
    Extracting archive

  - Installing bower-asset/angular-route-1.3.20 (v1.3.20)
    Downloading: 100%
    Extracting archive

Writing lock file
Generating autoload files

For your example, dependencies with multiple versions is not required:

{
    "require": {
        "bower-asset/angular": "1.3.20",
        "bower-asset/angular-route": "1.3.20"
    }
}
$ composer install --prefer-dist
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing bower-asset/angular (v1.3.20)
    Downloading: 100%
    Extracting archive

  - Installing bower-asset/angular-route (v1.3.20)
    Downloading: 100%
    Extracting archive

Writing lock file
Generating autoload files
ghost commented 8 years ago

Hi,

Sorry. I need multiple versions of Angular in my project. But I didn't include other dependencies in the example.

It should be something like:

{
    "require": {
        "bower-asset/angular-1.3.20": "1.3.20",
        "bower-asset/angular-1.3.16": "1.3.16",
        "bower-asset/angular-route-1.3.16": "1.3.16",
        "bower-asset/angular-route-1.3.20": "1.3.20"
    }
}