1

编辑

我想我误解了satis,现在这是我的新理解,如果我错了,请纠正我:

在 satis.json 中,我必须指定要镜像的包的 url,例如,学说 git repo、yaml git repo... 然后 satis 将所有这些包镜像到我的服务器上。这意味着我需要将项目的 composer.json 中使用的所有包添加到 satis json(大约 20 个包/要求)。现在,我可以将我的私有 satis 存储库添加到我的项目的 composer.json 文件中,并且在运行“composer update”时,它将首先在 satis 镜像包中查找所需的包。我理解正确吗?

情况:

我正在尝试将 Satis 用于私人作曲家存储库。我在 github 上有一个私人项目,用于我的网站。在项目中,我使用的是composer,因此我在项目的根目录上有一个composer.json。它看起来如下:

{
   "name": "Peter North",
   "license": "proprietary",
   "type": "project",
   "autoload": {
      "psr-4": {
        "": "src/"
      }
   },
   "require": {
      "php": ">=5.3.9",
      "symfony/http-foundation": "dev-master"
   }
   ...
}

现在我想使用我的私有 url 满足存储库:packages.ait.company,在 apache 上运行并且到目前为止可以访问。satis.json 如下所示:

{
   "name": "AIT Company",
   "homepage": "packages.ait.com",
   "repositories": [
       {
           "type": "vcs",
           "url": "git@github.com:north/ait.git" // this is the url of my private github project
       }
   ],
   "require-all": true,
   "require-dependencies": true,
   "archive": {
       "directory": "dist",
       "format": "tar",
       "skip-dev": true
   }
}

我认为我不太了解如何构建 satis.json 文件以及它需要包含什么,因为我尝试的方式是它不会下载我指定的“php”和“symfony/http-foundation”包在 composer.json 文件中 - 尽管它确实将项目的正确 composer.json 文件下载到 /satis/include 目录 json 文件中。

当我想从 github 读取我的项目的 composer.json 并构建“需要条目”的私有 satis 存储库时,satis.json 需要看起来如何?

4

1 回答 1

1

在我的 Satis 更新脚本中,从外部包以及内部私有存储库创建本地副本是一个两步过程。

第一步只下载外部依赖的元数据,并将它们放入一个中间满足存储库。该配置明确地不“全部要求”,但具有正在使用的所有包的明确声明(以及一些可能使用的,或过去曾使用过的),带有开放式版本通配符,即"symfony/console":">=2.4"(没有波浪号或插入符号 - 我想在此处获取主要版本更新)。添加require-dependencies:true扫描所有必需包的所有依赖项并将它们添加到元数据集合中。

结果存储在“外部”目录中。

第二步负责扫描内部“存储库”中的所有包,并从中创建档案。这显然是所有私有存储库的列表,但诀窍是:您还可以添加到satis.json类型为“composer”的存储库 - 这是我添加外部存储库与来自外部包的元数据的地方。在此处添加它会将所有外部包的版本添加到需要创建 ZIP 文件的版本列表中。

第一次运行它需要很长时间,因为需要下载所有包(并从私有存储库本地创建)。之后运行它只是对以前未创建的新版本的增量更新。

关键是在一个 Satis 文件中配置收集没有 ZIP 和明确版本范围的外部包(“*”作为版本可以工作,但只有在你真的需要所有版本时才使用它)在一个 Satis 文件中,然后将生成的存储库添加到第二个 Satis 配置. 您不能将这两个操作(仅创建选定外部依赖项的 ZIP 和所有内部存储库的 ZIP)组合到一个 Satis 运行中。

另一个提示:您可能只想创建外部依赖项的本地副本,以避免在部署到生产环境(或正在开发并需要更新)时遇到 Github 中断。为了确保每个使用的依赖项都在我的 Satis 中,我将 Satis 存储库添加到每个composer.json以及"packagist":false以关闭与 Packagist 的任何直接联系。你不能只是添加一个随机包,它必须首先在你的本地 Satis 存储库中。

于 2015-12-08T00:57:05.923 回答