使用场景引用第三方包时,需要修改第三方包,代码需要放在自己的仓库;而自己的其他项目也需要参考自定义第三方包;甚至修改后的第一方包也会自行发布。三方包;看完本文,你将获得:GitSubmodule的基本使用从本地加载第三方包从自定义仓库地址获取扩展包快速创建第三方包这篇文章是我想创建一个基本的第三方包时记录的以下操作步骤1.使用gitsubmoudle在现有项目中使用第三方包。通常composer安装的包都在vendor目录下,仓库地址指向第三方包作者的仓库。这时候修改第三方包。一是无法收录到git管理库,二是提交pullrequest需要等待作者审核更新,可能不会被采纳1)fork对方的项目2)下载fork的项目到local>mkdirpackages>gitsubmodule添加https://github。com/mpandar/laravel-packager.gitpackages/mpandar/laravel-packager3)之后可以编辑包的内容,在packages/mpandar/laravel-packager目录下使用git命令提交文件2。调整composer.json的内容,让项目可以使用自定义包内容files主要是加载helper函数//autoload-dev-psr-4主要测试"autoload":{"psr-4":{"JeroenG\\Packager\\":"packages/mpandar/laravel-packager/src"},"files":["packages/mpandar/wechat/src/Kernel/Helpers.php"]},"autoload-dev":{"psr-4":{"JeroenG\\Packager\\Tests\\":"packages/mpandar/laravel-packager/tests"}},添加完成后运行composerdumpautoload,否则下面添加ServiceProvider会报错,ServiceProvider对应到ServiceProvider3,因为laravelpackage找不到添加的包:discover是读取vendor/composer/installed.json文件中安装的包,而我们的包是手动添加的,所以无法自动添加ServiceProvider,手动添加'providers'在app.php=>[JeroenG\Packager\PackagerServiceProvider::class,],'aliases'=>['CreditsShop'=>Mpandar\CreditsShop\Facades\CreditsShop::class,],通过php艺术家列表,你可以看到包中的命令已经添加了4.Others项目使用自定义包JeroenG\Packager快速创建基于laravel的扩展包,在使用过程中发现了一个小问题,比如phpartisanpackager:newmpandarlaravel-cart理想的目录结构应该是包|-mpandar|-laravel-cart|-src|-LaravelCartProvider.php|-LaravelCart.php|-Facades|-LaravelCart.php但是它实际创建的Provider名为laravel-cartProvider,如果使用phpartisanpackager:newmpandarLaravelCart,目录名又错了,所以我修复了它(或者我可能不会使用它......)//dev-master表示取主分支"repositories":[{"type":"vcs","url":"https://github.com/mpandar/laravel-packager"}],"require":{"jeroen-g/laravel-packager":"dev-master"},//composerupdate就够了5.为Laravel开发扩展包使用jeroen-g/laravel-packager很容易创建扩展包Basicproject>phpartisanpackager:newmpandarcredits-shop0/6[>----------------------------]0%创建包mpandar\credits-shop...1/6[====>---------------------]16%创建包目录...2/6[=========>-----------------]33%创建供应商...3/6[===============>-------------]50%下载骨架...4/6[====================>--------]66%替换骨架占位符...5/6[=========================>----]83%转储自动加载和发现包。..生成优化的自动加载文件>Illuminate\Foundation\ComposerScripts::postAutoloadDump>@phpartisanpackage:discover6/6[==============================]100%包创建成功!创建的目录结构:及相关配置自动添加到composer.json和app.php中。ok,那你就可以开发扩展包了!
