【发布时间】:2020-11-10 06:03:50
【问题描述】:
我正在尝试设置一个作曲家项目,该项目将使我能够设置自己的框架并提取存储在 github 私有 repos 中的任何给定依赖项。
首先是一些先决条件:
- 我不想向 packagegist 添加代码。
- 我想确保我的供应商文件夹尽可能干净。
框架composer.json
{
"name": "mycompany/myframework",
"description": "YET another Framework",
"type": "project",
"repositories": [
{
"type": "package",
"package": {
"name": "mycompany/system",
"version": "0.0.2",
"type": "library",
"source": {
"url": "https://github.com/mycompany/system.git",
"type": "git",
"reference": "master"
}
}
}
],
"require": {
"mycompany/system": "0.0.2",
"mnsami/composer-custom-directory-installer": "1.1.*"
},
"license": "proprietary",
"authors": [...],
"extra":{
"installer-paths":{}
}
}
我的公司/系统 composer.json
{
"name": "mycompany/system",
"type": "library",
"description": "utility belt xD"
}
PHP 中的类代码(来自 mycompany/sytem )具有以下结构:
namespace MYCOMPANY;
//this file name is called utils.php
//adherence to PSR-4 is assumed
class utils {
}
我的目标是:
我想告诉作曲家它应该创建以下结构:
vendor\MYCOMPANY\utils.php(不是vendor\mycompany\system\utils.php)
稍后,我希望能够添加更多这样的存储库并将它们也存储在 MYCOMPANY 下。框架将解决此设置。
自定义安装由mnsami/composer-custom-directory-installer处理
根据经验,我猜我应该将不同的包保存在它们自己的目录中,但是,因为其他文件将有不同的命名约定,所以不存在被覆盖的风险。
编辑 这可以做到吗? 如果有,怎么做?
提前谢谢你
【问题讨论】:
-
您的确切问题是什么?到目前为止,您尝试过什么来完成这项工作?是的,这完全可以通过 Composer 的核心功能实现
-
关于该安装程序的附加提示:我从未听说过,但最后一次代码更改已经有四年了。如果你真的想使用它,也许你想多想
-
@NicoHaase 对此感到抱歉。我在问怎么做。我的尝试导致供应商文件夹包含 mycompany/system 而不是预期的 mycompany。可能吗?我必须做哪些更改才能订购? “别名”配置是 composer 最接近的功能,但我认为这不是它的答案。我在其他地方读到,该模块应该命名为 mycompany/mycompany,以便作曲家采用相同的名称,但其他模块不能具有该名称,我不想在同一个存储库中编写不同的模块。
-
@NicoHaase 安装程序是一个测试。我目前正在阅读 composer 的自定义安装程序功能以检查它们是如何工作的,但我宁愿不使用它们,除非这是最后的手段。
-
为什么要关心文件的存储位置? Composer 在
vendor文件夹中使用多级结构是很常见的——这是您可以从同一个MYCOMPANY命名空间获得多个 包的唯一方法
标签: php namespaces composer-php