我可以从我自己的 Composer Satis 安装中同步或镜像来自 packagist.org 的依赖项吗?
Posted
技术标签:
【中文标题】我可以从我自己的 Composer Satis 安装中同步或镜像来自 packagist.org 的依赖项吗?【英文标题】:Can I synchronize or mirror dependencies from packagist.org with my own Composer Satis installation? 【发布时间】:2012-07-30 08:31:18 【问题描述】:我们有自己的 Satis 存储库,我们可以在那里存储我们自己的依赖项。这很好用。
但是,如果开发人员使用了不在我们自己的存储库中的包,那么 Composer 将通过 packagist.org 从 GitHub 获取它(作为后备)。
但我们不想依赖于 packagist.org。所有依赖项都应该从我们自己的存储库中下载。
我们想知道的是,Satis 是否可以从 Packagist 下载一个包,如果它在本地还没有,然后将其存储并自动添加到 Satis 自己的存储库中。
这样我们就不必手动将依赖项添加到 Satis 存储库中。
【问题讨论】:
Packagist 只存储包元数据。实际的源代码来自存储库(通常是 gitHub)。我想您可以浏览 composer 源代码以了解它们如何列出包并下载元数据。 【参考方案1】:Satis 现在支持这个。
只需按照Satis setup instructions 并将以下内容添加到您的配置文件(默认名为satis.json)。更新 prefix-url 并酌情要求。
"repositories": [
"type": "composer", "url": "https://packagist.org"
],
"require-dependencies": true,
"require":
your application dependencies from composer.json
,
"archive":
"directory": "dist",
"prefix-url": "your server",
"skip-dev": true
然后,您可以像往常一样创建您的 Satis 存储库:
php bin/satis build <configuration file> <build dir>
现在,您的 Satis 存储库将满足您应用程序的所有依赖项。
注意:第一次运行可能需要一段时间。随后的运行速度要快得多。另外,请注意,Satis 使用 /tmp 作为其缓存。在 /tmp 由 tmpfs 支持的小型内存系统上,如果依赖关系树很大,则可能需要增加 /tmp 的可用空间。
您可能还想在项目的 composer.json 文件中使用disable the Packagist repository 来强制所有依赖项都来自您的 Satis 存储库。为此,请添加:
"repositories": [
"packagist": false
]
到您项目的 composer.json。
【讨论】:
感谢您的评论!在归档所有依赖项(例如php bin/satis build
)时,此配置是否仍会使您的 Satis 实例依赖于 Packagist?因此,如果在您运行 php bin/satis build
时 Packagist.org 已关闭,它就不会知道每个依赖项所在的位置。当然,这意味着手动维护repositories
中所有规范存储库 URL 的列表,但这是您为独立付出的代价。还是我错过了什么?
你是对的,但这没什么大不了的,因为如果 Packagist 宕机了,你仍然拥有在上次运行 Satis 期间拉下的所有依赖项。在实践中,我认为当您在正常开发和生产期间主动更改依赖项并使用完全满意的依赖项镜像时,您会遇到(并修复)任何外部问题(例如 Packagist 不可用)。
这里的问题是您仍然需要手动添加所有依赖项。如果你有一个 git repo,你可以添加它,但是该 repo 中项目所需的依赖项不会自动加载,这是一个很大的手动工作。【参考方案2】:
您现在可以使用broker 来实现此目的。很可能会添加此功能以满足其自身的需求。
【讨论】:
"注意:此项目不再积极维护。由于satis 现在支持类似的功能,您应该改用satis。"以上是关于我可以从我自己的 Composer Satis 安装中同步或镜像来自 packagist.org 的依赖项吗?的主要内容,如果未能解决你的问题,请参考以下文章
Docker搭建内网 composer satis 代码仓库