如何将自定义Laravel包独立维护在Git仓库及相关疑问
自定义Laravel包的Git独立维护方案
问题1:将该包维护在独立Git仓库的正确方式是什么?
- 先从主应用Git仓库中解除对包目录的跟踪:执行
git rm -r --cached packages/vendor/name,本地文件会保留,但主仓库不再监控该目录的变动。 - 将
packages/vendor/name目录移至主应用外部的独立路径(也可暂时留在原地),进入该目录执行git init初始化仓库,添加所有文件git add .,提交初始版本git commit -m "Initial commit of custom Laravel package"。 - 在Git托管平台创建空仓库,将本地仓库与远程仓库关联:
git remote add origin <远程仓库地址>,最后推送代码git push -u origin main。
问题2:是否需要将packages/*目录添加到主应用的.gitignore文件中?
- 是的。当包作为独立仓库维护后,主应用内的
packages/vendor/name是Composer拉取的依赖副本,无需让主应用Git跟踪这些文件。直接在主应用的.gitignore中添加packages/*即可;若有需要保留的子目录,可加例外规则,比如!/packages/keep-this-dir。 - 即便还未完成独立仓库迁移,提前将该目录加入
.gitignore也能避免主仓库意外提交包的改动。
问题3:是否需要将包从主应用移出,执行git init并推送到独立仓库后,再通过composer require引入回来?后续更新包是否会较为繁琐?
- 这是标准的合规流程:先完成包的独立仓库迁移,再通过Composer将其作为依赖引入主应用。
- 后续更新并不繁琐:本地开发阶段,可利用Composer的
path仓库类型关联本地包目录,修改包代码后主应用会实时同步,无需反复推送远程再拉取。配置方式是在主应用composer.json中添加:
开发完成后,给包打版本标签(如"repositories": [ { "type": "path", "url": "../path/to/your/package" } ]git tag v1.0.1并推送git push origin v1.0.1),再在主应用执行composer update vendor/name即可拉取最新正式版本。
内容的提问来源于stack exchange,提问作者JanBoehmer
相关产品推荐
相关产品推荐

