Satis私有存储库-Satis.json结构


Satis Private Repository - satis.json structure

编辑

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

在satis.json中,我必须指定要镜像的包的url s,例如条令git-reo、yaml-git-reo。。。然后satis在我的服务器上镜像所有这些包。这意味着我需要将项目的composer.json中使用的所有包添加到satisjson中(大约20个包/需求)。现在,我可以将我的私有satis存储库添加到我的项目的composer.json文件中,并且在运行"作曲家更新";,它将首先在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"
   }
   ...
}

现在我想使用我的私人satis存储库url:packages.ait.com.pany,运行在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基金会";我在composer.json文件中指定的包-尽管它确实将项目的正确composer.json文件下载到/satis/include目录json文件。

当我想从github读取我的项目的composer.json并构建";需要条目"?

在我的Satis更新脚本中,从外部包和内部私有存储库创建本地副本需要两个步骤。

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

结果存储在"外部"目录中。

第二步负责扫描内部"存储库"中的所有包,并从中创建存档。这显然是所有私有repo的列表,但诀窍是:你也可以向satis.json添加一个类型为"composer"的存储库——这就是我添加外部存储库的地方,其中包含来自外部包的元数据。在此处添加它会将所有外部包的版本添加到需要创建ZIP文件的版本列表中。

第一次运行它需要很长时间,因为所有的包都需要下载(并从私人转发中本地创建)。之后运行它只是对以前没有创建的新版本进行增量更新。

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

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