有没有办法让Composer运行位于./src/
的安装程序插件?
relevant docs对于如何做到这一点并不清楚,假设可以开始。
如果没有,文档似乎也暗示可以在COMPOSER_HOME中安装一个插件,但基本上没有说明如何这样做 - 任何指针都是最受欢迎的。
只是为了澄清:问题不在于自动加载类,而是在运行composer install
或composer update
时让作曲家加载插件。
我的项目设置:
./app
…
./src
./src/Hello
./src/Hello/HelloPlugin.php
./vendor
…
插件文件:
<?php # ./src/Hello/Hello.php
namespace Hello;
use Composer\Composer;
use Composer\IO\IOInterface;
use Composer\Plugin\PluginInterface;
class HelloPlugin implements PluginInterface
{
public function activate(Composer $composer, IOInterface $io);
{
echo "Hello World!".PHP_EOL;
}
} # END class
项目的composer.json
文件的相关行:
{
"name": "hello/world",
"type": "project",
"autoload": {
"psr-0": {
"Hello\\": "src/"
}
},
"require": {
"composer/installers": "~1.0",
"composer-plugin-api": "~1.0"
},
"extra": {
"class": ["Hello\\HelloPlugin"]
}
}
答案 0 :(得分:1)
作曲家autoload
用于加载您项目中namespaces
的所有require
个包,而不是在composer install
或{{{}期间加载插件1}}挂钩。
加载自己的插件类的唯一方法是实现自己的composer插件,这是composer update
类型的普通包,作者将使用它来加载composer-plugin
类。否则,在HelloPlugin
挂钩期间不会加载您的插件类。
我自己构建了一个composer install
,您可以在这里找到它https://github.com/mnsami/composer-custom-directory-installer,以供参考。
如果您有更多问题/或帮助,请随时询问。
答案 1 :(得分:-1)
"autoload": {
"psr-0": {
"Hello\\": "src/"
}
}