关于如何开发Laravel扩展包的文章已经很多了。但是大部分文章过于片面和不完整,我在实际开发扩展包的时候还是遇到了很多问题。我会把我的开发经验和遇到的问题记录下来,分享给大家。扩展包开发1.新建一个项目,初始化扩展包配置首先新建一个Laravel项目:composercreate-projectlaravel/laravellaradmin-vvv接下来在这个项目中,创建目录packages/{your_name}/{your_package_name}mkdir-ppackages/angkee/laradmin进入扩展包目录,初始化composer配置cdpackages/angkee/laradmincomposerinit执行后会在项目下生成一个composer.json文件:{"name":"angkee/laradmin","description":"laradmin是一个laravel包,可以快速生成后台管理面板","license":"MIT","authors":[{"name":"angkee","email":"angkee@qq.com"}],"require":{}}2.创建扩展包的基本目录和文件一般我们会创建如下文件和目录:angkee/laradmin├──src#存放扩展包的所有逻辑代码├──tests#存放测试用例├──README.md├──composer.json└──LICENSE3.修改扩展包composer配置然后,修改这个扩展包中的composer.json文件,设置composer的自动加载配置,以及扩展包Namespaces的配置。{...,"autoload":{"psr-4":{"Angkee\\Laradmin\\":"src/"}},"autoload-dev":{"psr-4":{"Angkee\\Laradmin\\Tests\\":"tests/"}},...}4.编写扩展包逻辑代码下面我们来创建AdminServiceProvider.php、Admin.php文件。app->singleton('admin',function()}{返回新管理员;});}}[...,Angkee\Admin\AdminServiceProvider::class,],然后修改项目下的composer.json文件{"require":{...,"angkee/laradmin":"dev-master"},...,"autoload":{...,"psr-4":{...,"Angkee\\Admin\\":"packages/laradmin/src/"}},...}运行命令:composerdump-autoloadcomposerupdate最后修改routes/web.php文件:Route::get('/',function(){app('admin')->printRunning();});此时,我们打开浏览器访问这个项目,显示running。恭喜你,你成功了!扩展包发布。扩展包开发测试完成后,这时候就可以发布到Packagist了。1.提交代码到GitHub首先需要将扩展??包的代码提交到GitHub,并记录GitHub仓库地址,注意是HTTPS。2.将扩展包发布到Packagist,然后访问Packagist官网。登录后点击右上角提交按钮进入发布向导:此时在RepositoryURL输入框中填写GitHub仓库地址,然后点击提交按钮。一切顺利,可以看到发布成功。3.设置代码同步一旦包在Pakagist上发布,就有一个机制保证后续的版本更新和代码同步,就是GitHub中的事件通知服务,用于在提交代码时触发一个事件,并将代码同步到其他环境中。添加一个服务,在服务列表中选择Packagist,主要填写两个Packagist配置信息:从Packagist的个人设置中获取。完成填写提交后,记得测试一次,完成第一次同步,成功会有提示信息。好的,测试有效载荷正在路上。返回Packagist并刷新。应该没有(NotAuto-Updated)提示,说明同步机制已经生效。之后,GitHub每次有变动,都会自动通知并同步。4.设置版本信息默认版本为dev-master,Composer包的版本号会从Git标签中同步出来。gittag1.0.0gitpush--tag扩展包刚刚发布。如果此时安装,可能会报找不到安装包的错误。您需要等待服务器同步。一般需要3-5分钟以上。如果一切正常,会看到版本提示,安装成功!参考资料Laravel的扩展开发指南Allforone,一劳永逸!将自己的Composer包发布到社区Composer&Laravel包本地开发
