如何在GitHub上为Laravel包提交PR?现有流程是否正确?
为Laravel包提交Pull Request的流程疑问
我目前在GitHub上给Laravel包提交PR的流程是这样的:
- 创建新的Laravel项目
- 通过Composer安装目标包
- 删除项目
vendor目录里的该包文件 - Fork目标包的GitHub仓库,然后克隆到项目对应目录
- 修改包代码并完成测试
- 执行
git add、git commit、git push操作后提交PR
我感觉这个步骤有点繁琐,想确认这是不是正确的操作方式?
举个例子,如果要给voyager包提交PR,我现在会执行这些命令:
laravel new create-pr
cd create-pr
composer require tcg/voyager
php artisan voyager:install
之后我会删除vendor/tcg/voyager文件夹,再把自己fork的仓库克隆成新的vendor/tcg/voyager文件夹。如果跳过composer require tcg/voyager这一步直接克隆fork仓库到对应目录,我就没法完成包的安装,因为缺少必要的配置和依赖处理。
其实你这个流程是可行但确实可以优化的,毕竟每次删vendor里的包再克隆有点折腾。给你分享两个更高效的方式:
方法1:用Composer自定义仓库指向你的Fork(最推荐)
这种方式完全不需要手动操作vendor目录,还能让Composer自动处理依赖和加载:
- 先把目标包的仓库Fork到自己的GitHub账号下
- 创建新的Laravel项目(或用现有项目)
- 在项目根目录的
composer.json里添加自定义仓库配置:
"repositories": [ { "type": "vcs", "url": "https://github.com/你的GitHub用户名/voyager.git" } ]
- 执行
composer require tcg/voyager:dev-你的分支名(比如你在fork后的feature/fix-bug分支开发,就写dev-feature/fix-bug) - 现在
vendor/tcg/voyager里的代码就是你fork仓库的内容了,直接在这里修改代码、完成测试后,执行git add、git commit、git push推送到你的fork仓库,之后就能提交PR了。
这种方式完美解决了你说的“跳过require无法完成安装”的问题,因为Composer会自动处理所有依赖配置和初始化流程。
方法2:本地符号链接(适合频繁维护包的场景)
如果你经常需要修改这个包,可以把fork的仓库单独克隆到本地,再用符号链接关联到Laravel项目:
- Fork并克隆目标包到本地任意非项目目录,比如
~/dev/voyager - 创建Laravel项目,执行
composer require tcg/voyager完成基础安装 - 删除
vendor/tcg/voyager目录 - 执行符号链接命令:
- Windows(PowerShell):
New-Item -ItemType SymbolicLink -Path vendor/tcg/voyager -Target ~/dev/voyager - macOS/Linux:
ln -s ~/dev/voyager vendor/tcg/voyager
- Windows(PowerShell):
- 之后你在
~/dev/voyager里修改代码,Laravel项目会实时加载改动内容,测试完成后直接在这个独立目录提交代码到fork仓库,再提交PR即可。
这种方式把包代码和Laravel项目分离,不用每次都在vendor里操作,适合长期维护某个包的情况。
总的来说,你原来的流程是正确的,但上述两种方法能帮你省去重复删除、克隆的繁琐步骤,效率会高很多。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

