没有简单的方法可以使用 Satis 获取私有存储库的所有包版本并镜像所有依赖项。
这是因为在某些时候镜像最终会尝试获取Packagist的全部内容。
要在 Satis 中镜像包的所有依赖项,您可以选择两种不同的方法:
A)添加存储库源并需要所有自己的包
Satis 默认禁用与 Packagist 的连接。因此,您必须将 Packagist 添加为存储库。如果您在不需要特定版本的包的情况下添加存储库,那么 Satis 将切换到 »require-all« 模式(“未定义显式要求,启用 require-all”)。然后,这将尝试获取存储库的所有包版本以及 Packagist 上的所有包版本。繁荣。这将失败。所以需要特定的包来防止 »require-all« 模式。
- 添加您的存储库
- 设置需要依赖项 (
require-dependencies: true
, require-dev-dependencies: true
)
- 添加 Packagist 作为存储库源(Satis 默认禁用 packagist.org)
- 禁用
require-all
标志
- 要求所有您自己的软件包以避免 Satis 切换到 »require-all« 模式
所以你的 satis.json 应该是这样的:
{
"name": "My satis repository",
"homepage": "http://satis.example.com",
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.org/"
},
"my-repo": {
"url": "git@github.com:<user>/<repository>.git",
"type": "vcs"
}
},
"require": {
"mycompany/package-foo": "^1.1",
"mycompany/package-bar": "*"
},
"require-all": false,
"require-dependencies": true,
"require-dev-dependencies": true,
"archive": {
"directory": "dist",
"format": "zip",
"skip-dev": true
}
}
来源:https ://github.com/composer/satis/issues/296
顺便说一句:从多个存储库中获取所有这些依赖项可能会导致内存限制错误。Composer 建议在运行 Satis 时提高内存限制,如下所示:
php -d memory_limit=2GB ./bin/satis build satis.json web
B) 安装两个 Satis 实例 - 一个四个您自己的包,一个镜像所有依赖项
如果您的存储库中有很多包,但只有几个依赖项,那么此方法将为您节省一些时间来写下需求(例如,您公司中有 100 个包,但只有 5 个依赖于第三方包)。
- 添加您的存储库
- 设置 »require-all« 以获取存储库中的所有包版本
这个 satis.json 应该是这样的:
{
"name": "My package repository",
"homepage": "http://packages.example.com",
"repositories": {
"my-repo": {
"url": "git@github.com:<user>/<repository>.git",
"type": "vcs"
}
},
"require-all": true,
"archive": {
"directory": "dist",
"format": "zip",
"skip-dev": true
}
}
这不会获取依赖项。这些需要在另一个 Satis 实例中手动添加。
- 添加另一个 Satis.json 以镜像所有依赖项
- 将 Packagist 添加为存储库
- 只需要所有需要的依赖包
这个 satis.json 应该是这样的:
{
"name": "My mirror repository",
"homepage": "http://mirror.example.com",
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.org/"
}
},
"require": {
"acme/some-package-foo": "*",
"johndoe/some-package-bar": "*"
},
"require-all": false,
"require-dependencies": true,
"require-dev-dependencies": true,
"archive": {
"directory": "dist",
"format": "zip",
"skip-dev": true
}
}
请注意,镜像所有依赖项将花费很长时间。
来源:http ://tech.m6web.fr/composer-installation-without-github.html