通过本地文件符号链接在本地开发 Composer 包,当您要创建 Laravel 包并在真实应用程序中试用时,可以极大地提高开发速度。我正在阅读 Caleb Porzio 撰写的关于 花哨的 bash 别名 的文章,该别名灵感来自 npm link。
我一直致力于改进我的本地工作流程,将 Laravel 包从开发阶段过渡到发布阶段,我经常发现自己通过 GitHub 仓库安装依赖项,然后一遍又一遍地运行 composer update,因为我比较懒惰。
我想记录一下我的工作流程,用于开发新的和现有的 Laravel 包并在真实的 Laravel 应用程序中运行它们,所有操作都在本地进行。
包设置
我将带您一步一步地创建一个从头开始的快速 Composer 包,并添加一个服务提供者。我知道一些包开发人员使用样板库作为 PHP 和 Laravel 包的起点(查看 Spatie 的 PHP 样板 以获得灵感)。
首先,让我们创建一个示例 composer 项目,并连接一个 Laravel 服务提供者。我喜欢从 ~/code 开始我的代码,因此请更新到您使用的任何位置
cd ~/codemkdir example-pkgcd example-pkg/mkdir src/composer init# Walk through the prompts to init...
生成 composer.json 文件后,让我们添加一些内容,用于自动加载和自动服务提供者
{ "name": "paul/example-package", "authors": [ { "name": "Paul Redmond", "email": "paul@example.com" } ], "autoload": { "psr-4": { "ExamplePackage\\": "src/" } }, "require": {}, "extra": { "laravel": { "providers": [ "ExamplePackage\\ExamplePackageServiceProvider" ] } }}
最后,让我们创建一个基本的服务提供者
<?php namespace ExamplePackage; use Illuminate\Support\ServiceProvider; class ExamplePackageServiceProvider extends ServiceProvider{ public function boot() { # code... } public function register() { # code... }}
将您的包链接到 Laravel 项目
现在我们已经拥有了一个可以用于开始开发新的 Laravel 包的本地 composer 项目,让我们创建一个演示 Laravel 应用程序,使用本地文件路径将我们的示例包链接起来
cd ~/codelaravel new laravel-democd laravel-demo
我建议您查看 Caleb Portzio 的 bash 别名,但以下是要链接本地存储库所需的静态命令
composer config repositories.local '{"type": "path", "url": "../example-pkg"}' --file composer.json
接下来,我们需要运行 composer require,将本地存储库添加为依赖项。请记住使用您在 example-package composer 文件中定义的 "name" 键
composer require paul/example-package Using version dev-master for paul/example-package./composer.json has been updatedLoading composer repositories with package informationUpdating dependencies (including require-dev)Nothing to install or updateGenerating optimized autoload files> Illuminate\Foundation\ComposerScripts::postAutoloadDump> @php artisan package:discoverDiscovered Package: fideloper/proxyDiscovered Package: laravel/tinkerDiscovered Package: nunomaduro/collisionDiscovered Package: paul/example-packagePackage manifest generated successfully.
您可以看到,我们的包是通过 composer.json 文件中的 "extra" 键发现的,太棒了!
如果您检查文件系统,您会注意到该包是符号链接的,这意味着您可以继续在本地开发该包,并立即在演示项目中试用它
cd ~/code/laravel-demols -la vendor/paultotal 0...example-package -> ../../../example-pkg
现在,您拥有了一种极好的方法,可以在本地开发 Laravel 包,同时与 Laravel 应用程序并存!感谢 Caleb 提供了 很棒的别名!