为什么只有某些作曲家包存储在缓存中而不是全部?

Why are only certain composer packages stored in cache and not all?

我 运行ning ubuntu 14.04 并注意到当我 运行 composer.phar update 依赖于像 googledoctrinetwig 等。它将下载的文件存储在我的本地 ~/.composer/cache/files/vendor 中。但是,当我自己创建 library package 并在另一个测试包中创建 "required" 时,它没有将这些下载到 /cache/files/ 文件夹中(但确实将条目添加到 /repo/https---packagist.org/*.json 文件中).

我想知道composer.phar在什么情况下会下载文件并存储在缓存中?我问这个是因为我将来要构建很多应用程序,包括 doctrine、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"

如果 Composer 克隆了一个 git 存储库,它不会使用缓存。

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

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