asciito / laravel-package
用于构建Laravel包的简单包
Requires (Dev)
- laravel/pint: ^v1.13.1
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^8.10
- pestphp/pest: ^v1.23.1
- pestphp/pest-plugin-laravel: ^1.4
- spatie/pest-plugin-test-time: ^1.1
README
这个PHP包可以帮助你更轻松地创建Laravel包,至少对我来说是这样的。
安装和使用
只需运行以下命令
composer require asciito/laravel-package
然后,我们需要遵循一些关于如何组织包文件夹的规则。所以我们将遵循Laravel约定。
<your-package>
├─ src
│ ├─ Console
│ │ └─ Commands
│ │ └─ ...
│ └─ YourPackageServiceProvider.php
├─ config
│ └─ package-config.php
├─ database
│ └─ migrations
│ ├─ your_package_migration_table.php
│ ├─ other_package_migration_table.php
│ └─ ...
├─ test
│ └─ ...
├─ composer.json
├─ composer.lock
├─ README.md
├ ...
.
注意
您可以通过编辑文件夹结构部分来编辑文件夹结构
现在,在您的服务提供者中,您应该声明两个方法以使您的包生效。一个是方法static::configurePackage(Package $package)
和static::getNamespace()
。
这是服务提供者最基本的配置,但这并没有为您做很多事情。如果您想要注册命令、配置文件和迁移文件,您需要向包链式调用更多方法。
class LaravelPackageServiceProvider extends PackageServiceProvider { protected function configurePackage(Package $package): void { $package->setName('<your-package-name>'); } }
注册命令
要注册您的包命令,请调用方法static::withCommands(string|string[] ...$command)
。现在不要担心方法的签名,如果您只是调用该方法,这将注册来自默认命令文件夹<your-package-folder>/src/Console/Commands
的命令。
protected function configurePackage(Package $package): string { $package ->setName('<your-package-name>') ->withCommands(); }
注册配置文件
添加配置文件与上一部分相同,只需调用方法static::withConfig(string|array $config = [], bool $publish = false)
。现在不要担心签名,如果您调用该方法,您将能够加载和发布所有配置文件。
protected function configurePackage(Package $package): string { $package ->setName('<your-package-name>') ->withConfig(); }
有了这个,您应该可以通过调用命令php artisan vendor:publish --tag=<your-package-name>-config
来发布所有配置文件,就是这样,所有来自您的包的配置文件都将被发布,并且如最后一节所述,您的默认文件夹应该是<your-package-folder>/config
。
注册迁移文件
要注册我们的迁移,只需调用方法static::withMigrations(string|array $config = [], bool $publish = false)
。现在不要担心方法的签名,如果您只是调用该方法,这将注册来自默认迁移文件夹<your-package-folder>/database/migrations
的命令。
protected function configurePackage(Package $package): string { $package ->setName('<your-package-name>') ->withMigrations(); }
有了这个,您应该可以通过调用命令php artisan vendor:publish --tag=<your-package-name>-migrations
来发布所有迁移文件,就是这样,所有来自您的包的迁移文件都将被发布,并且如最后一节所述,您的默认文件夹应该是<your-package-folder>/database/migrations
。
注意
Laravel默认不发现您的包,因此您需要手动注册服务提供者(在v5.5之前),但您可以通过将服务提供者添加到
composer.json
中的extra
属性来指示Laravel自动发现您的包(v5.5或更高版本)。例如
{ "extra": { "laravel": { "providers": [ "Vendor\\YourPackageName\\YourPackageServiceProvider" ] } } }如果您将服务提供者添加到这个属性,Laravel将自动发现您的包。
您可以在Laravel官方文档上了解更多信息。
文档
正在加载...
编辑文件夹结构
正在加载...
许可证
laravel-package是开源软件,根据MIT许可证许可。