插件安装升级

在安装和升级应用插件时,请遵循各插件的说明文档,按照相关指令进行操作。在执行之前,务必仔细阅读应用插件的授权协议,确保您符合使用条件。 应用插件基于自定义插件安装器 ThinkInstall 实现,这一高级插件无需直接安装。通过配置应用插件的依赖关系,即可完成安装过程。与普通应用插件相比,ThinkInstall 提供了更便捷、更灵活的插件管理方式。它能帮助您快速集成和管理插件,进一步提升应用的扩展性和可维护性。

普通应用插件

普通应用插件安装在 vendor/package 目录下面,不占用 app 下的应用目录。

可以使用插件安装器初始化配置及资源文件,通过插件服务类注册,安装后不需要做 “自毁” 操作。

通常可以使用 composer remove 操作卸载该插件,数据库及部分配置或资源文件需要手动去删除。

高级应用插件

使用插件安装器将代码安装到 app 下的应用目录或其他目录,不使用自身组件安装的目录,需要调用插件安装器的 “自毁” 机制,仅保留应用目录下面的代码。

通过使用 composer remove 不能卸载该插件,需要执行该指令后手动进行删除,以及数据库等。

插件安装配置

通过配置应用插件 composer.jsonextra.plugin 参数,实现将应用插件的文件复制到指定的某个目录,或者将原安装目录清理删除。

  • 初始生成文件:extra.plugin.init 初始化文件,若文件存在则不进行操作,数据为 Object
  • 复制目录文件:extra.plugin.copy 执行文件或目录复制操作,支持 增量复制绝对复制 两种模式,数据为 Object
  • 删除安装目录:extra.plugin.clear 清空并删除原安装仓库目录,主要用于清理安装后不再使用的组件,数据为 true
  • 安装卸载事件:extra.plugin.event 指向静态 File:Class 名称,已支持静态 onRemoveonInstall 事件,仅支持原生代码。
  • 复制安装类型的插件,可以不配置 autoload 规则,但要注意 copy 后放置的文件位置符合已有 autoload 自动加载规则。

复制操作的注意事项:

  1. 如果目标目录下存在 ignore 文件,则会跳转该复制操作;
  2. 如果目标位置是以 ! 开头则表示 绝对复制,会先删除目标再进行复制操作;

插件 composer.json 配置案例如下:

{
  "type": "think-admin-plugin",
  "name": "zoujingli/think-plugs-admin",
  "extra": {
    "config": {
      "type": "module",
      "name": "系统后台管理"
    },
    "plugin": {
      "copy": {
        "stc/database": "database/migrations"
      }
    },
    "think": {
      "services": [
        "app\\admin\\Service"
      ]
    }
  },
  "autoload": {
    "psr-4": {
      "app\\admin": "src"
    }
  }
}
Last Updated:
Contributors: 邹景立