2017-09-25 6 views
0

J'ai le fichier composer.json suivant:Comment remplacer la version requise définie par composer.json hébergée sur packagist.org?

{ 
    "require": { 
    "guzzlehttp/guzzle": "^5.3" 
    }, 
    "require-dev": { 
    "aeris/guzzle-http-mock": ">=1.1.5" 
    } 
} 

où je voudrais forcer aeris/guzzle-http-mock package à utiliser la version différente de guzzlehttp/guzzle (comme 5.3.1), mais il semble que les exigences sont lues à partir du fichier hébergé sur composer.jsonpackagist.org. Est-il possible de contourner ces exigences?

Ainsi, au lieu de:

"guzzlehttp/guzzle": "~5.0.0" 

Je voudrais définir:

"guzzlehttp/guzzle": "^5.3" 

idéalement en ne changeant que mon dossier composer.json local.

Actuellement, la commande affiche les erreurs de conflit:

$ composer install --prefer-source -vvv 
Reading ./composer.json 
Loading config file ./composer.json 
... 
Reading ~/.composer/cache/repo/https---packagist.org/provider-aeris$guzzle-http-mock.json from cache 
Resolving dependencies through SAT 
Dependency resolution completed in 0.000 seconds 
Reading ~/.composer/cache/repo/https---packagist.org/provider-guzzlehttp$guzzle.json from cache 
Your requirements could not be resolved to an installable set of packages. 

    Problem 1 
    - Installation request for aeris/guzzle-http-mock >=1.1.5 -> satisfiable by aeris/guzzle-http-mock[1.1.5]. 
    - aeris/guzzle-http-mock 1.1.5 requires guzzlehttp/guzzle ~5.0.0 -> satisfiable by guzzlehttp/guzzle[5.0.0, 5.0.1, 5.0.2, 5.0.3] but these conflict with your requirements or minimum-stability. 

Répondre

0

Il existe une solution à l'aide replace property qui vise à remplacer paquet donné, pour que d'autres paquets ne seront pas télécharger. Par exemple:

{ 
    "require": { 
    "aeris/guzzle-http-mock": ">=1.1.5" 
    }, 
    "replace": { 
    "guzzlehttp/guzzle": "~5.0.0" 
    }, 
    "minimum-stability": "dev", 
    "prefer-stable": true 
} 

ignorera guzzlehttp/guzzle dépendance et il ne sera pas téléchargé, mais la bonne version doit être fournie séparément ou dans le cadre du paquet.

Par exemple, le dépôt requis peut être clonées manuellement en ajoutant:

"repositories": [ 
    { 
    "type": "vcs", 
    "url": "https://github.com/guzzle/guzzle.git" 
    } 
] 

Une autre idée est d'utiliser inline aliases comme:

"guzzlehttp/guzzle": "dev-5.3.0 as 5.0.3" 

mais il ne fonctionne pas comme prévu de toute façon après avoir testé de cette façon, mais peut-être qu'il y a un moyen.


fil GitHub connexes: How to replace the 3rd party dependency?