但我仍然无法让自己开始。Satis 是基于项目安装的吗?如果是这样,这是否意味着我必须在每个新项目上安装 Satis?
不,satis 是您个人的类似打包专家的存储库。在其中,您保留了一组定义,用于获取您想要自己托管的包的位置,而不是从 packagegist 获取它们。
我试图从一个文件夹运行 composer.phar create-project composer/satis --stability=dev 并且我收到错误消息,提示找不到 composer.phar。
如果 composer 不在您的路径中,该命令将是 php 'composer.phar' ( https://getcomposer.org/doc/00-intro.md#globally )
因此,我尝试使用 composer create-project composer/satis --stability=dev 并在我运行 composer 的文件夹中创建一个名为 satis 的新文件夹。
很好,这意味着您已将 composer.phar 移动到 /usr/local/bin/composer 并且您可以通过运行“composer”来全局运行它(这意味着您可以从系统中的每个目录运行它)
关于如何运行 satis 的“合乎逻辑”的分步说明应该澄清我认为让您感到困惑的事情:
背景
您想要满足,因为您想从自己的存储库(git 或其他,我将用 git 制作我的示例)中提供一些项目,而不是从作曲家默认使用的服务中定义的存储库中提取它,即包装师。可能您想对原始包进行更改,并且不希望在包有更新时覆盖它们。因此,您需要一个中间步骤,您可以将您的更改与上游更改合并。
简要作曲家工作流程
Packagist 不保存包的源代码,它保存每个包的一组定义(composer.json 文件),并且在这组定义中,包的 repo 是可用的。
当你运行作曲家时,
- 它读取 packagegist 中的定义
- 它从定义的公共仓库(github、git、svn 等)下载包
- 它按照包本身中的其他定义对其进行编译
简要 Composer/Satis 工作流程
使用 satis 的流程是: - Composer 被指示使用 satis 中的定义 - 它读取在 satis 中找到的定义 - 它从 satis 中定义的公共 repo 下载包 - 它按照包本身中的其他定义对其进行编译
逐步创建有用的 Composer/Satis/Git 设置
根据上述,一步一步的说明是:
- 全局安装作曲家(为了简单起见,你已经有了)
- 在一个可以从网络上获得的文件夹中,安装 satis
- 在系统中的某个位置(最容易在专用 git 用户的家庭位置,它可能是 'satis' 用户),克隆一个 git repo 以获得您想要修改并从您自己的 git repo 提供的包
- 在您的 satis 存储库中添加一个 satis.json 文件,其中包含项目的定义
- 从同一位置运行 'php bin/satis build satis.json root/(我更喜欢 'root/' 而不是标准的 'web/')并将 web 服务器的 documentRoot 设置为 'path/to/root/'
对于上面的第 4 步,例如:
{
"name": "My Repo",
"homepage": "http://satis.mydomain.com",
"repositories": [
{
"type": "git",
"url": "satis@satis.mydomain.com:<packagename>"
}
],
"require-all": true
}
现在你有了:composer、一个 git repo 和一个 satis repo(你自己的打包师)。所有这些都位于不同且独立的位置。
逐步使用 Composer 中的 Satis 和 Git
创建一个要安装包的目录按照 composer 的说明,在这个目录中添加一个 composer.json 文件。这一次,虽然包是您修改后的版本,但 composer.json 文件将如下所示:
{
"name": "<yourname>/<packagename>",
"repositories": [
{
"type": "composer",
"url": "http://satis.yourdomain.com"
},
{"packagist": true},
{ "type": "composer", "url": "https://packagist.org" }
],
"version": "dev-master",
"require": {
"<originalvendorname>/<packagename>": "dev-master"
},
"minimum-stability": "dev"
}
用任何你想要的替换,而 originalvendorname/packagename 是包的全名。在这种情况下,您正在创建自己的包版本,该包是从您的 satis 存储库中定义的 git 存储库中提取的。在那里找不到的(可能的依赖项)将从每个依赖项的原始 git 存储库中提取,该存储库在 packagist.org 存储库中定义。
当您对自己的软件包版本进行更多修改并进行更多提交时,您需要更新您的 satis 存储库。按照上面的步骤 #5 重新构建它。
通过这种方式,它将链接到您的主分支的最后一次提交(以 'dev-' 为前缀)
希望这可以帮助。分步命令是在您在帖子开头提到的页面中找到的命令。