3

我已经在自己的服务器上成功设置了 Satis,并且能够从中提取包。

但是,这些私有包中所需的依赖项会不断被克隆到其最前沿的版本,而不是指定的版本约束。我认为 Satis 正在创建最新开发版本的本地镜像。但是我不想有本地镜像,我只需要它们直接从 Packagist 安装。

那么我需要如何设置项目 / 包 / 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"
}
4

1 回答 1

5

在您定义的 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-dependencies

是否可以将多个包驻留在一个定义的存储库中,或者每个包是否都需要在 Satis 中拥有自己的存储库 url 条目?

我认为在一个存储库中不可能有多个包"type": "vcs"

使用"type": "composer"克隆的 packagegist,您可以存储多个 repos。想想http://drupal-composer.orghttp://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
}
于 2015-03-25T10:24:56.367 回答