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
Requires
- catchadmin/plugin-hook: ^0.1.0
- laravel/roster: ^0.2.5
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