【问题标题】:Why are only certain composer packages stored in cache and not all?为什么只有某些作曲家包存储在缓存中而不是全部?
【发布时间】:2015-12-06 01:24:52
【问题描述】:

我正在运行 ubuntu 14.04 并注意到当我运行 composer.phar update 以获取对供应商(如 googledoctrinetwig 等)具有依赖性的软件包时,它会将下载的文件存储在我的本地 ~/.composer/cache/files/vendor .然而,当我自己创建了一个library package,并在另一个测试包中“需要”它时,它并没有将这些下载到/cache/files/ 文件夹中(但确实在/repo/https---packagist.org/*.json 文件中添加了条目)。

我想知道 composer.phar 在什么情况下会下载文件并存储在缓存中?我问这个是因为我将来要构建很多应用程序,包括像学说、symfony 和 zend 框架这样的组件,我不希望composer.phar 再次下载这些框架的副本来浪费互联网带宽并再次为每个应用程序。当然,另一个好处是,如果我决定切换 ubuntu 并转移到其他发行版,我不想重新下载大量的作曲家包。

我个人的猜测是,由于我没有在 github 存储库中标记我的 lib 包(它仍然是 dev-master),它没有存储在缓存中。有人可以确认一下吗?


1.composer.json require 依赖于google/apiclient 的应用部分:

"require": {
    "google/apiclient": "1.*.*"
}

2.composer.json require 依赖于prahladyeri/indiegogo 的应用部分:

"require": {
    "prahladyeri/indiegogo": "dev-master"
},
"license": "MIT",
"minimum-stability": "dev"

【问题讨论】:

    标签: php composer-php packagist


    【解决方案1】:

    如果 Composer 克隆了一个 git 存储库,它并没有使用缓存。

    标记的版本将从 Github API 下载为 ZIP 文件,因为它们的大小通常小于整个存储库,并且它们被放入缓存目录中。

    尽早发布,经常发布。如果您标记每个您认为稳定并且可以使用的提交,那么没有人会反对。使用semantic versioning,您有很多选项可以标记仍在发展的不稳定版本,但您可以为您的用户提供很多帮助。

    【讨论】:

    • 谢谢!我如何知道 composer 是在克隆 repo 还是在安装 zip 包?是不是因为我指定的dev-master版本?
    • 默认情况下,分支上的依赖项正在克隆存储库。这使得增量更新更快,因为 Composer 将简单地拉入现有的克隆。然而,依赖分支对软件稳定性非常不利,因为每个新提交都可能被某人下载为更新,如果这破坏了任何东西,人们会不高兴。标记发布通常是在包的开发人员确信他的最后一部分工作已经完成时完成,并且包的消费者可以在更新时选择这个新版本或最后一个现有版本 - 使用分支是不可能的。
    • 好的,事情是这样的:我标记了一个名为“v0.1.0”的版本(现在packagist也指向与我的github相同的版本)。现在,我将我的应用程序的要求部分更改为:"prahladyeri/indiegogo": "0.*" 并说composer.phar update。它更新了应用程序,但仍然没有缓存它!我错过了什么?
    • 如果 Composer 克隆了一个 repo,它不会更改为 ZIP 下载,因为这将是低效的。您必须删除您的vendor 文件夹并再次运行composer install。执行此操作时,您可以使用选项--prefer-dist(下载)或--prefer-source(克隆)来表明您首选的访问方式。见getcomposer.org/doc/03-cli.md#install
    • 非常感谢@Sven。删除vendor 文件夹应该很明显,但不知何故让我忘记了!
    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2020-01-26
    相关资源
    最近更新 更多