composer:有没有办法为包存储库指定首选项顺序?

时间:2018-03-09 09:37:42

标签: php composer-php repository composer.json

我正在使用packagistfiregento上的vendorName/moduleName(Magento扩展程序包)。

在我的composer.json文件中,我有:

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

作为Composer is downloaded pre-configured to use packagist.orgvendorName/moduleNamepackagist加载。

我想强制从vendorName/moduleName加载firegento

我试图添加:

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

然而,作曲家将不再在packagist中搜索:这不是我想要的。(因为packagist中也有有用的包...)

我想我可以使用

composer config --global --unset repositories.packagist

然后

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

以我的首选顺序添加存储库(我不确定它是否有效......)。

有没有更好/更简单的方法来实现我的目的?我宁愿编辑composer.json而不是运行全局配置命令,但这可能是不可能的。

1 个答案:

答案 0 :(得分:4)

那么,

我想我找到了答案here

  

最终,存储库候选者仅按其定义顺序进行评估。根据定义,Packagist在内部添加为最后一个(尽管您可以禁用它),以确保在解析器设置允许的情况下始终首选本地副本。

这意味着如果我在firegento中定义composer.json个回购,那么编辑将在vendorName/moduleName之前加载firegento中的包packagist。我以为这是相反的行为;我错了。

另一条有用的评论here

  

存储库定义的顺序很重要。但是,无论如何,作曲家仍然会搜索所有存储库,因为它可能是稍后定义的存储库具有您需要的更新版本的软件包。