2017-02-01 14 views
1

コンポーザーに私にはext-imagickまたはext-gmagickのどちらかが必要であることを教えてもらえませんか?しかし、両方ではありません!PHPコンポーザは排他的な依存関係が必要です

としては、私はいくつかの仮想パッケージを追加提案:

"repositories": [ 
    { 
     "type": "package", 
     "package": { 
      "name": "virtual/imagine-gd", 
      "version": "1.0.0", 
      "require": { 
       "ext-gd": "*" 
      }, 
      "provide": { 
       "virtual/imagine-impl": "1.0.0" 
      } 
     } 
    }, 
    { 
     "type": "package", 
     "package": { 
      "name": "virtual/imagine-gmagick", 
      "version": "1.0.0", 
      "require": { 
       "ext-gmagick": "*" 
      }, 
      "provide": { 
       "virtual/imagine-impl": "1.0.0" 
      } 
     } 
    }, 
    { 
     "type": "package", 
     "package": { 
      "name": "virtual/imagine-imagick", 
      "version": "1.0.0", 
      "require": { 
       "ext-imagick": "*" 
      }, 
      "provide": { 
       "virtual/imagine-impl": "1.0.0" 
      } 
     } 
    } 
] 

をしてインクルードが必要追加:

"virtual/imagine-impl": "^1.0" 

が、エラーを行く:

The requested package virtual/imagine-impl could not be found in any version, there may be a typo in the package name. 

答えて

2

は、私はこのことであなたを助けることを願って従属ロジックを多様に取って、仮想パッケージを可能にし、必要とする小さなパッケージに分離してください。

`{ 
    "name": "my/gd-impl", 
    "require": { 
    "ext-gd": "*" 
    }, 
    "provide": { 
    "my/image-processor": "1.0.0" 
    } 
} 


{ 
    "name": "my/imagick-impl", 
    "require": { 
    "ext-imagick": "*" 
    }, 
    "provide": { 
    "my/image-processor": "1.0.0" 
    } 
} 


{ 
    "name": "my/gmagick-impl", 
    "require": { 
    "ext-gmagick": "*" 
    }, 
    "provide": { 
    "my/image-processor": "1.0.0" 
    } 
} 


{ 
    "name": "my/awesome-project", 
    "require": { 
    "my/image-processor": "^1.0.0" 
    } 
}` 
+0

whoo!クール!だから私は多くの 'type = package'で'リポジトリ 'エントリを使うことができましたか? – quazardous

関連する問題