创建Composer插件需定义类型为composer-plugin的包,实现PluginInterface接口,并在extra.class中指定入口类。通过监听事件如post-install-cmd可执行自定义逻辑。使用时可通过本地路径引用或发布到Packagist,安装后Composer会自动激活插件并运行相应方法。

创建和使用一个 Composer 插件,本质上是开发一个 PHP 包,该包通过实现特定接口来扩展 Composer 的功能。Composer 插件可以在安装、更新、卸载包等过程中执行自定义逻辑,比如自动配置、生成文件或修改依赖行为。
要创建一个 Composer 插件,需要满足几个条件:正确的包类型、实现插件接口、在 composer.json 中声明插件信息。
1. 初始化项目mkdir my-composer-plugin cd my-composer-plugin composer init
your-vendor/my-composer-plugin),类型设为 composer-plugin。
2. 设置 composer.jsoncomposer.json 包含以下关键字段:
{
    "name": "your-vendor/my-composer-plugin",
    "type": "composer-plugin",
    "require": {
        "composer-plugin-api": "^2.0",
        "composer/composer": "^2.0"
    },
    "autoload": {
        "psr-4": {
            "My\Composer\Plugin\": "src/"
        }
    },
    "extra": {
        "class": "My\Composer\Plugin\MyPlugin"
    }
}
src/ 并添加主类文件 MyPlugin.php:
<?php
namespace MyComposerPlugin;
use ComposerComposer;
use ComposerIOIOInterface;
use ComposerPluginPluginInterface;
use ComposerEventDispatcherEventSubscriberInterface;
use ComposerScriptScriptEvents;
use ComposerInstallerPackageEvent;
class MyPlugin implements PluginInterface, EventSubscriberInterface
{
    protected $composer;
    protected $io;
    public function activate(Composer $composer, IOInterface $io)
    {
        $this->composer = $composer;
        $this->io = $io;
    }
    public static function getSubscribedEvents()
    {
        return [
            ScriptEvents::POST_INSTALL_CMD => 'onPostInstall',
            ScriptEvents::POST_UPDATE_CMD => 'onPostUpdate',
        ];
    }
    public function onPostInstall($event)
    {
        $this->io->write('<info>[MyPlugin] 安装完成,执行自定义操作...</info>');
        // 可以在这里执行文件生成、配置写入等
    }
    public function onPostUpdate($event)
    {
        $this->io->write('<info>[MyPlugin] 更新完成,清理缓存...</info>');
    }
}
本地测试或在其他项目中使用该插件,有几种方式。
1. 本地路径引用(开发阶段)composer.json 中添加仓库和依赖:
{
    "repositories": [
        {
            "type": "path",
            "url": "../my-composer-plugin"
        }
    ],
    "require": {
        "your-vendor/my-composer-plugin": "*"
    }
}
composer require your-vendor/my-composer-plugin
vendor,并自动激活它(因为是插件类型)。
2. 发布到 Packagist(正式使用)composer require your-vendor/my-composer-plugin
composer install
composer config --list 查看已加载插件(部分版本支持)。 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号