在 Packagist 和软件包安装路径上创建软件包


Creating package on Packagist and the package installation path

我创建了一个 yii2 扩展。它是一个 Yii2 小部件。我为它创建了一个GitHub存储库。在composer.json的一些问题之后,我成功地使用了这个 Packagist 软件包。

现在我可以使用以下命令在任何 yii2 应用程序中使用作曲家安装它:

composer require saidbakr/yii-jui-themes-list=1.2

有一个问题:它已安装在vendor'saidbakr'yii-jui-themes-list但是,我希望它直接安装在vendor'saidbakr上,因为我的PHP代码命名空间考虑了这个命名空间。那么有什么方法可以让我控制包的安装位置,或者至少让我的文件直接放在存储库所有者上?

您当前的命名空间是这样定义的

namespace vendor'saidbakr;

你应该使用类似的东西

namespace yiiJuiThemesList;

仅仅因为作曲家要将其放入供应商文件夹并不意味着您需要命名空间。

您的命名空间严重错误。它们不应包含"供应商"。您实际上应该允许软件包安装在它已经安装的确切位置,这正是它应该工作的方式。无论您不让它们安装在另一个地方

如果你想让命名空间更简单,看看这里:https://github.com/Mihai-P/yii2-core/blob/master/composer.json

我就是这样做的。基本上我告诉作曲家,core命名空间实际上指向 vendor/tez/yii2-cms-module

这样当你说

use core/widgets/blala 

它将知道转到供应商/tez/yii2-cms-module/widgets/blala

这就是您想要设置这一切的方式。

你也可以在 yii2 中设置一个别名,就像我在这里所做的那样:https://github.com/Mihai-P/yii2-app-advanced/blob/master/common/config/bootstrap.php