包开发
小于 1 分钟
新建一个项目
laravel new laravel
在目录下创建一个 packages
目录
packages 创建一个包模板
https://github.com/spatie/package-skeleton-laravel
git clone https://github.com/spatie/package-skeleton-laravel.git
初始化
php configure.php
composer install
在主项目的 composer.json
中添加本地扩展包
{
"name": "orangbus/laravel-login",
"version": "1.0.0", // 需要补充
"require": {
......
"orangbus/laravel-mini-login": "*" // 包名
},
"repositories": [
{
"type": "path",
"url": "packages/laravel-mini-login" // 包路径
}
]
}
主目录更新依赖
composer update
用到的命令
发布迁移文件,可是使用 php artisan vendor:publish
列出来查看一下
php artisan vendor:publish --tag=<package-name>-migrations
路由处理
https://spatie.be/docs/laravel-route-discovery/v1/introduction
composer require spatie/laravel-route-discovery
配置控制器发现: packages/package-name/xxxProvider
public function packageBooted(): void
{
Discover::controllers()
->useBasePath(__DIR__)
->useRootNamespace('Laravelminilogin\LaravelMiniLogin\\') // 对应包下面的 providers 中找到
->in(__DIR__.'/Controllers'); // 当前包控制器的目录
}
packages/laravel-mini-login/src/Controllers/Api/Login/Index.php
#[Route(method: 'POST',fullUri: "api/login")]
public function login(){
return $this->success("登录成功");
}