Satis 私有存储库 - satis.json 结构
Satis Private Repository - satis.json structure
EDIT
I think I misunderstood satis, now this is my new understanding, please correct me if I am wrong:
In satis.json, I must specify the url s of the packages I want to mirror, e.g the doctrine git repo, yaml git repo... Then satis mirrors all these packages on my server. This would mean I need to add once all packages used within my composer.json of my project to the satis json (around 20 packages/requirements ). Now, I can add my private satis repository to the composer.json file of my project and when running "composer update", it will first look within the satis mirrored packages for the required package. Did I understand that correctly?
情况:
我正在尝试将 Satis 用于私人作曲家存储库。我在 github 上有一个私人项目,用于我的网站。在项目中,我使用的是作曲家,因此我在项目的根目录中有一个 composer.json 。它看起来如下:
{
"name": "Peter North",
"license": "proprietary",
"type": "project",
"autoload": {
"psr-4": {
"": "src/"
}
},
"require": {
"php": ">=5.3.9",
"symfony/http-foundation": "dev-master"
}
...
}
现在我想在 apache 上使用我的 url: packages.ait.company, 运行 的私有 satis 存储库,目前可以访问。 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 需要是什么样子?
在我的 Satis 更新脚本中,从外部包以及内部私有存储库创建本地副本是一个两步过程。
第一步只下载外部依赖的元数据,并将它们放入中间satis存储库中。该配置明确地没有 "require-all",但明确声明了所有正在使用的包(以及一些可能使用或过去使用过的)带有开放式版本通配符,即 "symfony/console":">=2.4"
(没有波浪号或插入符号 - 我想在这里获得主要版本更新)。添加 require-dependencies:true
扫描所有必需包的所有依赖项,并将它们也添加到元数据集合中。
结果存储在目录"external"。
第二步负责扫描来自内部 "repositories" 的所有包,并从中创建存档。这显然是所有私有存储库的列表,但诀窍是:您还可以向 satis.json
添加类型为 "composer" 的存储库 - 这是我添加带有元数据的外部存储库的地方外部包。在此处添加它会将所有外部包的版本添加到需要创建 ZIP 文件的版本列表中。
运行 第一次需要很长时间,因为需要下载所有包(并从私有仓库本地创建)。 运行 之后它只是对之前未创建的新版本的增量更新。
关键是在一个 Satis 文件中配置收集不带 ZIP 且具有明确版本范围(“*”作为版本可以工作,但只有在你确实需要所有版本时才使用它)的外部包,然后添加生成的存储库到第二个 Satis 配置。您不能将这两个操作(仅创建选定外部依赖项的 ZIP 和所有内部存储库的 ZIP)合并为一个 Satis 运行.
另一个提示:您可能只想创建外部依赖项的本地副本,以避免在部署到生产环境(或正在开发并需要更新)时遇到 Github 中断。为了确保每个使用的依赖项都在我的 Satis 中,我将 Satis 存储库添加到每个 composer.json
以及 "packagist":false
,以关闭与 Packagist 的任何直接联系。你不能只添加一个随机包,它必须首先在你本地的 Satis 存储库中。
EDIT
I think I misunderstood satis, now this is my new understanding, please correct me if I am wrong:
In satis.json, I must specify the url s of the packages I want to mirror, e.g the doctrine git repo, yaml git repo... Then satis mirrors all these packages on my server. This would mean I need to add once all packages used within my composer.json of my project to the satis json (around 20 packages/requirements ). Now, I can add my private satis repository to the composer.json file of my project and when running "composer update", it will first look within the satis mirrored packages for the required package. Did I understand that correctly?
情况:
我正在尝试将 Satis 用于私人作曲家存储库。我在 github 上有一个私人项目,用于我的网站。在项目中,我使用的是作曲家,因此我在项目的根目录中有一个 composer.json 。它看起来如下:
{
"name": "Peter North",
"license": "proprietary",
"type": "project",
"autoload": {
"psr-4": {
"": "src/"
}
},
"require": {
"php": ">=5.3.9",
"symfony/http-foundation": "dev-master"
}
...
}
现在我想在 apache 上使用我的 url: packages.ait.company, 运行 的私有 satis 存储库,目前可以访问。 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 需要是什么样子?
在我的 Satis 更新脚本中,从外部包以及内部私有存储库创建本地副本是一个两步过程。
第一步只下载外部依赖的元数据,并将它们放入中间satis存储库中。该配置明确地没有 "require-all",但明确声明了所有正在使用的包(以及一些可能使用或过去使用过的)带有开放式版本通配符,即 "symfony/console":">=2.4"
(没有波浪号或插入符号 - 我想在这里获得主要版本更新)。添加 require-dependencies:true
扫描所有必需包的所有依赖项,并将它们也添加到元数据集合中。
结果存储在目录"external"。
第二步负责扫描来自内部 "repositories" 的所有包,并从中创建存档。这显然是所有私有存储库的列表,但诀窍是:您还可以向 satis.json
添加类型为 "composer" 的存储库 - 这是我添加带有元数据的外部存储库的地方外部包。在此处添加它会将所有外部包的版本添加到需要创建 ZIP 文件的版本列表中。
运行 第一次需要很长时间,因为需要下载所有包(并从私有仓库本地创建)。 运行 之后它只是对之前未创建的新版本的增量更新。
关键是在一个 Satis 文件中配置收集不带 ZIP 且具有明确版本范围(“*”作为版本可以工作,但只有在你确实需要所有版本时才使用它)的外部包,然后添加生成的存储库到第二个 Satis 配置。您不能将这两个操作(仅创建选定外部依赖项的 ZIP 和所有内部存储库的 ZIP)合并为一个 Satis 运行.
另一个提示:您可能只想创建外部依赖项的本地副本,以避免在部署到生产环境(或正在开发并需要更新)时遇到 Github 中断。为了确保每个使用的依赖项都在我的 Satis 中,我将 Satis 存储库添加到每个 composer.json
以及 "packagist":false
,以关闭与 Packagist 的任何直接联系。你不能只添加一个随机包,它必须首先在你本地的 Satis 存储库中。