composer : is there a way to specify a preference order for package repositories?

白昼怎懂夜的黑 提交于 2020-02-23 12:51:31

问题


I am working with a package vendorName/moduleName (a Magento extension) that is present on packagist and on firegento.

On my composer.json file, I have :

"require": {
   ....................,
   ...................,
  "vendorName/moduleName":"*"
},
"repositories": [
  ......................,
  ....................,
  {
    "type": "composer",
    "url": "https://packages.firegento.com"
  }
],

As Composer is downloaded pre-configured to use packagist.org , the vendorName/moduleName is loaded from packagist.

I would like to force vendorName/moduleName to be loaded from firegento.

I tried to add :

"repositories": [
  {
    "packagist": false
  },

but then, composer will no more search in packagist : that's not what I want.(as there are usefull packages in packagist too...)

I guess I could use

composer config --global --unset repositories.packagist

and then

composer config --global repositories.firegento composer https://packages.firegento.com
composer config --global repositories.packagist composer https://packagist.org

to add repositories in my prefered order (I'm not sure it works...).

Is there a better/simpler way to achieve my purpose ? I would prefer editing the composer.json more than running global config commands but it's maybe not possible.


回答1:


Well,

I think I found the answer here:

Repository candidates are, in the end, only evaluated by their order of definition. Packagist is internally added as the last one by definition (though you can disable that) to ensure local copies are always preferred, if allowed by resolver settings.

That means that if I define the firegento repo in my composer.json, then composer will load the package vendorName/moduleName in firegento before packagist. I thought it was the opposite behaviour; I was wrong.

Another helpfull comment here:

Order of repository definitions matters. But composer will still search through all repositories regardless, because it could be that a repository that is defined later has a more recent version available of the package you are requiring.



来源:https://stackoverflow.com/questions/49190694/composer-is-there-a-way-to-specify-a-preference-order-for-package-repositories

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!