thegeekengineer / laravel-packager
一个用于创建Laravel扩展包的命令行工具。
Requires
- php: ^7.1|^8.0
- ext-json: *
- ext-zip: *
- guzzlehttp/guzzle: ~7
- illuminate/support: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: >=3.8
- phpunit/phpunit: ^8.0|^9.0
Suggests
- sensiolabs/security-checker: Required to use the security check command
README
本扩展包为您提供了一个简单的工具,用于设置新扩展包,并让您专注于扩展包的开发,而不是样板代码。如果您喜欢视觉解释,请查看Laracasts上的Jeffrey Way的视频:Building Laracasts。
安装
通过Composer
composer require thegeekengineer/laravel-packager --dev
如果您运行的不是Laravel 5.5(或更高版本),请在config/app.php
中添加服务提供者
TheGeekEnginee\Packager\PackagerServiceProvider::class,
如果您在Laravel 5.5+上运行此扩展包,扩展包自动发现会处理添加服务提供者的魔法。请注意,自动发现还意味着此扩展包将在您的生产环境中加载。因此,您可以选择禁用自动发现,并将以下内容放入您的AppServiceProvider
中
if ($this->app->environment('local')) { $this->app->register('TheGeekEnginee\Packager\PackagerServiceProvider'); }
可选地,您可以发布配置以提供不同的服务提供者模板。默认模板在此处。
php artisan vendor:publish --provider="TheGeekEnginee\Packager\PackagerServiceProvider"
可用命令
New
命令
php artisan packager:new my-vendor my-package
结果:该命令将为您处理几乎所有事情。它将创建一个包目录,在目录中创建供应商和包目录,拉取骨架包,设置composer.json并创建服务提供者。
选项
php artisan packager:new my-vendor my-package --i php artisan packager:new --i
扩展包将交互式创建,允许配置包的composer.json
中的所有内容,例如许可证和包描述。
php artisan packager:new my-vendor/my-package
或者,您也可以使用正斜杠而不是空格来定义供应商和名称。
备注:新扩展包将基于此自定义骨架。如果您想使用不同的包骨架,您可以选择
- (A) 发布配置文件并更改所有
packager:new
调用将使用的默认骨架。 - (B) 使用
--skeleton="http://github.com/path/to/archive/master.zip"
标志和您自己的骨架,在这次运行中而不是配置中的骨架中使用指定的骨架。
获取 & Git
命令
php artisan packager:get https://github.com/author/repository php artisan packager:git https://github.com/author/repository
结果:这将注册包到应用的composer.json
文件。如果使用packager:git
命令,则将整个Git仓库克隆。如果使用packager:get
,则将包下载,不包含仓库。这也适用于Bitbucket仓库,但您必须为packager:get
命令提供标志--host=bitbucket
。
选项
php artisan packager:get https://github.com/author/repository --branch=develop php artisan packager:get https://github.com/author/repository my-vendor my-package php artisan packager:git https://github.com/author/repository my-vendor my-package
您可以使用--branch
选项指定分支。如果您在url后直接指定供应商和名称,则将使用这些而不是url的部分。
测试
命令
php artisan packager:tests
结果:Packager将遍历所有维护的包(在packages/
中),并将它们的测试发布到tests/packages
。要将包的测试运行在phpunit.xml(在其他测试套件下)中,请添加以下内容
<testsuite name="Packages"> <directory suffix="Test.php">./tests/packages</directory> </testsuite>
选项
php artisan packager:tests my-vendor my-package
备注:如果存在测试文件夹,文件将被复制到Laravel App测试文件夹中的专用文件夹。这允许您无任何麻烦地使用所有Laravel的自身测试功能。
列表
命令
php artisan packager:list
结果:所有在/packages
目录中的包的概述。
选项
php artisan packager:list --git
如果是一个Git仓库,则显示包含git状态(分支,与原点的提交差异)的包信息。
移除
命令
php artisan packager:remove my-vendor my-package
结果: my-vendor\my-package
包被删除,包括其在 composer.json
和 config/app.php
中的引用。
发布
命令
php artisan packager:publish my-vendor my-package https://github.com/my-vendor/my-package
结果: 将使用提供的url将 my-vendor\my-package
包发布到Github。
检查
命令
php artisan packager:check my-vendor my-package
结果: 将使用SensioLabs安全检查器检查 my-vendor\my-package
包的安全漏洞。
备注 您首先需要运行
composer require sensiolabs/security-checker
cURL SSL证书问题
结果发现,尤其是在Windows上,由于操作系统缺少SSL证书相关的文件,可能会在下载骨架时出现问题。这可以通过打开您的 .env 文件并在其中添加以下内容来解决:
CURL_VERIFY=false
当然,这意味着安全性会降低,但您不应该在生产环境中运行此包。
超时问题
如果您在创建新包时遇到超时问题,您现在可以更改 config/packager.php 中的配置变量 timeout 来解决这个问题。
变更日志
请参阅 changelog.md 了解最近的变化。
贡献
请参阅 contributing.md 了解详细信息以及待办事项列表。
鸣谢
许可证
欧盟公共许可证。请参阅 license.md 了解更多信息。