【问题标题】:How to update a single composer package?如何更新单个作曲家包?
【发布时间】:2015-05-29 00:23:27
【问题描述】:

我知道我可以使用composer update vendor/package,但这是我的情况。

Composer 在更新时非常慢,我安装了大约 6 个包,并且从本地文件夹加载了一个本地 vcs 包。当我运行 composer update 时,即使是针对特定的本地包,composer 也会连接到 Packagist 以查找其他更新,这个过程非常缓慢,我不知道是我的电脑还是我的互联网。当我运行 composer update local/package 而不联系 Packagist 并运行它下载的所有繁重的 json 文件时,有没有办法告诉作曲家只从本地文件夹更新包?

注意: 我知道如何加载本地作曲家包。它加载完美,只是我正在寻找一种方法来告诉作曲家只需加载本地包而不联系Packagist。

"repositories": [
   {
     "type": "vcs",
     "url": "../local/package"
   }
],

我的问题是联系Packagist 很慢。运行 composer update local/package -vvv 表明它仍然从 packagist 下载 json 文件,即使它被告知只更新 local/package

【问题讨论】:

标签: php composer-php packagist


【解决方案1】:

有多种方法可以加快 Composer 的获取速度:

  1. 定义一个自定义仓库,它指向一个本地路径和install--prefer-source

    "repositories": [
        {
            "type":"vcs",
            "url":"/path/to/your/local/package/packageA"
        }
    ],
    "require":{
        "package/packageA" : "dev-master"
    }
    

    后续技巧:如果您确切知道 repo 的 type,然后指定它!

    换句话说:如果您可以指定"type":"git""type":"svn",请不要使用"type":"vcs"。 Composer 将跳过运行所有 repo 适配器以找出正确的适配器。

  2. 您可以设置 Satis 并仅为您的项目及其依赖项定义所需的包 ("require-dependencies": "true")。这充当了 packagegist 前面的包代理。您只需从本地 Satis 镜像/代理中获取。


试一试,禁用默认的 Packagist 存储库:

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

【讨论】:

  • 谢谢 Jens,但我正在寻找如何告诉作曲家在更新本地包时不要联系 Packagist。我更新了问题。
  • 更新了我的答案:请使用 packagist: false 禁用 packagegist。
  • 添加packagist: false 解决了这个问题,但是我每次更新其他包时都必须删除它,当我想更新本地时再次添加它。我认为composer应该添加检测包何时是本地的功能,如果是,则无需调用packagist.com。无论如何,谢谢,解决了。
  • 很高兴我能帮上忙……您关于检测而不是调用 packagist 的想法很好。
猜你喜欢
  • 2014-09-20
  • 2018-07-19
  • 2021-04-24
  • 2015-12-01
  • 1970-01-01
  • 2015-09-11
  • 2016-02-13
  • 2014-11-19
  • 1970-01-01
相关资源
最近更新 更多