我已经在自己的服务器上成功地设置了Satis,并且能够从中提取包。
然而,这些私有包中所需的依赖项不断地在其出血边缘版本而不是指定的版本约束下进行克隆。我认为Satis正在创建最新开发版本的本地镜像。然而,我不想有一个本地镜像,我只需要他们直接从Packagist安装。
那么,我需要如何设置项目/package/Satis,以便从Packagist安装那些私有包中的依赖项呢?
谢谢。
这是我的Satis构建文件:
{
"name": "Package Server",
"homepage": "http://packages.URL",
"repositories": [
{
"type": "vcs",
"url": "git@bitbucket.org:USERNAME/REPO.git",
"options": {
"ssh2": {
"username": "USERNAME",
"pubkey_file": "PUBFILE",
"privkey_file": "PRIVATEFILE"
}
}
}
],
"require-all": true
}
这是需要私有包的项目的composer.json文件(包没有标记的版本):
{
"name": "Test Project",
"description": "",
"require": {
"php": ">=5.4.0",
"USERNAME/REPO": "*"
},
"repositories": [
{
"type": "composer",
"url": "http://packages.URL"
}
],
"minimum-stability": "dev"
}
这是私有包的composer.json:
{
"name": "USERNAME/RPO",
"description": "",
"require": {
"php": ">=5.4.0",
"illuminate/support": "5.0.*",
"vinkla/hashids": "~1.0"
},
"minimum-stability": "dev"
}
在Satis配置中,您定义了"require-all": true
。这是默认设置,并选择您定义的存储库中所有包的所有版本。
您可以尝试删除"require-all": true
以使用require
部分。这意味着Satis将只包含这些特定的包及其版本,比如:
"require": {
"company/packageA": "*",
"company/packageB": "1.2.3",
"company/packageC": "2.0.0"
}
这是在Satis 上挑选樱桃的包裹
因此,如果我理解正确,我需要在require密钥中添加指定私有存储库中可用的私有包,然后从Packagist安装它们自己的依赖项?
添加require-dependencies
-这个命令告诉Satis不仅要镜像"require"部分中指定的包,还要镜像它们的所有依赖项。
请参阅https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#resolving-依赖
是否可以将多个包驻留在一个定义的存储库中,或者每个包都需要在Satis中输入自己的存储库url?
我认为在一个"type": "vcs"
存储库中有多个包是不可能的。
使用"type": "composer"
和克隆的包装学家,您可以存储多个repo。想想http://drupal-composer.org具有http://packagist.drupal-composer.org/.
{
"repositories": [
{ "type": "vcs", "url": "https://github.com/somewhere/packageA" },
{ "type": "composer", "url": "https://packagist.org" }
],
"require": {
"package/packageA": "somewhere-dev",
"phpunit/phpunit": "*"
},
"require-dependencies": true
}