插件的安装机制提个小建议

ab0029

问题描述

在插件二开的情况下,以webman/admin为例子,如果手动调整了视图为blade,视图文件则.blade.php结尾,这时候删除掉原来的视图文件,而当另外一个同事首次开发时候,composer install首次安装时候,插件又会同步之前删除的视图文件到项目目录,为了解决这个问题,我不得不把插件的引用从compsoer.json去掉,只是去掉了后可能又会存在以后需要同步插件的问题还有插件代码缺失问题(虽然webman/admin不会)

解决建议

希望可以新增composer配置去忽略安装问题或者和应用一样有个版本的升级机制

参考laravel框架忽略自动加载扩展服务,在composer里面加入以下扩展信息

"extra": {
        "laravel": {
            "dont-discover": [
                "xxx/xxxxx"
            ]
        }
    },
610 1 0
1个回答

walkor

不知道你说的插件是指基础插件还是应用插件。
基础插件源码都在vendor下,不能直接二开,需要自己fork重新发布成自己的composer库。
应用插件实际上就是把代码放在plugin下,除了webman/admin基本都不基于composer,也就没有composer install同步代码到本地问题。

  • ab0029 2023-03-06

    表述的不清晰,是webman/admin应用插件安装机制的问题,多人开发情况下,当第一个人引入webman/admin包,安装好后,在本地plugin已经把webman/admin的视图改成blade模板,然后删除旧的视图文件,这时候提交完代码仓库,当第二个开发人员第一次克隆项目下来时候,进行composer install就会有问题,support\Plugin::install安装重新调用了Webman\Admin的install方法,而这个方法就直接把vendor的代码copy到plugin目录,然后旧的视图文件又回来了。主要原因是composer install的时候调用了support\Plugin::install方法重复安装

  • ab0029 2023-03-06

    每次composer update或者安装新的扩展包也会执行support\Plugin::install,这就导致了如果删除过plugin下面的文件时,Webman\Admin的install方法都会复制一份composer包里面的文件,看了下底层直接用了copy_dir进行不覆盖拷贝,也就意味着删除过文件都会重新复制回plugin目录

  • walkor 2023-03-06

    安装完后把webman/admin从composer里去掉就好了。
    需要升级的时候可以直接从admin插件市场升级admin。

  • ab0029 2023-03-06

    是的,目前是这么去操作的,可以考虑support/Plugin的方法扩展下,忽略安装也可以

年代过于久远,无法发表回答
🔝