catchadmin/plugin

CatchAdmin Plugin Manager

Installs: 3

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/catchadmin/plugin

v1.0.1 2025-12-03 14:06 UTC

This package is auto-updated.

Last update: 2025-12-03 14:10:14 UTC


README

CatchAdmin 的插件管理系统,提供插件的安装、卸载、启用、禁用等功能。

安装

composer require catchadmin/plugin

功能

  • 插件在线市场
  • 本地插件管理
  • 插件安装/卸载/启用/禁用
  • 插件生命周期钩子(Hook)
  • 插件初始化命令

命令

初始化插件

php artisan catch:plugin-init

交互式创建新插件,包括:

  • 插件标题和包名
  • 插件类型(library / self-plugin)
  • ServiceProvider(可选)
  • Hook 文件(可选)

其他命令

# 安装插件
php artisan catch:plugin-install

# 打包插件
php artisan catch:plugin-pack

配置项:

<?php

return [
    /*
   |--------------------------------------------------------------------------
   | 插件HOST
   |--------------------------------------------------------------------------
   |
   | 插件服务端 HOST
   |
   */
    'plugin_host' => env('PLUGIN_HOST', 'https://catchadmin.vip/api'),

    /*
    |--------------------------------------------------------------------------
    | 插件目录(相对路径)
    |--------------------------------------------------------------------------
    |
    | 插件存放的根目录,相对于 storage 目录
    |
    */
    'directory' => env('PLUGIN_DIRECTORY', 'plugins'),

    /*
    |--------------------------------------------------------------------------
    | 插件目录(完整路径)
    |--------------------------------------------------------------------------
    |
    | 插件存放的完整路径(storage/plugins)
    |
    */
    'path' => storage_path(env('PLUGIN_DIRECTORY', 'plugins')),

    /*
    |--------------------------------------------------------------------------
    | 插件开始目录(完整路径)
    |--------------------------------------------------------------------------
    |
    | 插件存放的开发完整路径(plugins)
    |
    */
    'develop' => base_path(env('PLUGIN_DIRECTORY', 'plugins')),

    /*
    |--------------------------------------------------------------------------
    | 打包输出目录
    |--------------------------------------------------------------------------
    |
    | 插件打包后的 zip 文件存放目录
    |
    */
    'dist_directory' => base_path(env('PLUGIN_DIST_DIRECTORY', 'plugins')),

    /*
    |--------------------------------------------------------------------------
    | 默认 PHP 版本要求
    |--------------------------------------------------------------------------
    |
    | 创建插件时 composer.json 中的 PHP 版本要求
    |
    */
    'php_version' => env('PLUGIN_PHP_VERSION', '>=8.2'),

    /*
    |--------------------------------------------------------------------------
    | 默认许可证
    |--------------------------------------------------------------------------
    |
    | 创建插件时 composer.json 中的许可证
    |
    */
    'license' => env('PLUGIN_LICENSE', 'proprietary'),

    /*
    |--------------------------------------------------------------------------
    | 默认插件类型
    |--------------------------------------------------------------------------
    |
    | 创建插件时的默认类型:library 或 self-plugin
    |
    */
    'default_type' => env('PLUGIN_DEFAULT_TYPE', 'library'),

    /*
    |--------------------------------------------------------------------------
    | 排除打包的目录和文件
    |--------------------------------------------------------------------------
    |
    | 打包插件时需要排除的目录和文件
    |
    */
    'pack_excludes' => [
        'vendor',
        'node_modules',
        '.git',
        '.idea',
        '.vscode',
        '.DS_Store',
        'Thumbs.db',
    ],

    /*
    |--------------------------------------------------------------------------
    | 临时文件存储目录
    |--------------------------------------------------------------------------
    |
    | 下载和解压插件时的临时目录
    |
    */
    'temp_directory' => storage_path(env('PLUGIN_TEMP_DIRECTORY', 'static')),

    /*
    |--------------------------------------------------------------------------
    | 已安装插件记录文件
    |--------------------------------------------------------------------------
    |
    | 记录已安装插件信息的 JSON 文件路径
    |
    */
    'installed_file' => storage_path(env('PLUGIN_INSTALLED_FILE', 'plugins/plugins.json')),
];

Hook 系统

插件可以定义生命周期钩子:

// src/Hook.php
class Hook
{
    public static function afterInstall(array $pluginInfo): void
    {
        // 安装后执行
        Artisan::call('migrate', [
            '--path' => 'vendor/my/plugin/database/migrations',
        ]);
    }

    public static function beforeUninstall(array $pluginInfo): void
    {
        // 卸载前执行
    }
}

详细文档请参考 catchadmin/plugin-hook

许可证

MIT