jeroen-g / laravel-packager
A cli tool for creating Laravel packages.
Installs: 610 748
Dependents: 19
Suggesters: 0
Security: 0
Stars: 1 358
Watchers: 33
Forks: 188
Open Issues: 17
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|^11.0
Requires (Dev)
- orchestra/testbench: >=3.8
- phpunit/phpunit: ^8.0|^9.0|^10.5
Suggests
- sensiolabs/security-checker: Required to use the security check command
- dev-master
- 2.10.0
- 2.9.0
- 2.8.0
- 2.7.2
- V2.7.1
- V2.7
- V2.6
- V2.5.3
- V2.5.2
- V2.5.1
- 2.5
- V2.4
- V2.3.1
- V2.3
- V2.2
- V2.1.3
- V2.1.2
- V2.1.1
- V2.1
- V2.0.1
- 2.0
- v1.6
- v1.5.5
- v1.5.4
- v1.5.3
- v1.5.2
- V1.5.1
- v1.5
- v1.4
- v1.3
- v1.2
- v1.1
- v1.0
- v0.2.1
- v0.2
- v0.1
- dev-dependabot/composer/phpunit/phpunit-tw-11.3.6
- dev-shift-111011
- dev-three
This package is auto-updated.
Last update: 2024-12-08 20:25:14 UTC
README
This package provides you with a simple tool to set up a new package and it will let you focus on the development of the package instead of the boilerplate. If you like a visual explanation check out this video by Jeffrey Way on Laracasts.
Installation
Via Composer
composer require jeroen-g/laravel-packager --dev
If you do not run Laravel 5.5 (or higher), then add the service provider in config/app.php
:
JeroenG\Packager\PackagerServiceProvider::class,
If you do run the package on Laravel 5.5+, package auto-discovery takes care of the magic of adding the service provider.
Be aware that the auto-discovery also means that this package is loaded in your production environment. Therefore you may disable auto-discovery and instead put in your AppServiceProvider
something like this:
if ($this->app->environment('local')) { $this->app->register('JeroenG\Packager\PackagerServiceProvider'); }
Optional you can publish the configuration to provide a different service provider stub. The default is here.
php artisan vendor:publish --provider="JeroenG\Packager\PackagerServiceProvider"
Available commands
New
Command:
php artisan packager:new my-vendor my-package
Result: The command will handle practically everything for you. It will create a packages directory, creates the vendor and package directory in it, pulls in a skeleton package, sets up composer.json and creates a service provider.
Options:
php artisan packager:new my-vendor my-package --i php artisan packager:new --i
The package will be created interactively, allowing to configure everything in the package's composer.json
, such as the license and package description.
php artisan packager:new my-vendor/my-package
Alternatively you may also define your vendor and name with a forward slash instead of a space.
Remarks: The new package will be based on this custom skeleton. If you want to use a different package skeleton, you can either:
- (A) publish the configuration file and change the default skeleton that will be used by all
packager:new
calls. - (B) use the flag
--skeleton="http://github.com/path/to/archive/master.zip"
with your own skeleton to use the given skeleton for this one run instead of the one in the configuration.
Get & Git
Command:
php artisan packager:get https://github.com/author/repository php artisan packager:git https://github.com/author/repository
Result:
This will register the package in the app's composer.json
file.
If the packager:git
command is used, the entire Git repository is cloned. If packager:get
is used, the package will be downloaded, without a repository. This also works with Bitbucket repositories, but you have to provide the flag --host=bitbucket
for the packager:get
command.
Options:
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
It is possible to specify a branch with the --branch
option. If you specify a vendor and name directly after the url, those will be used instead of the pieces of the url.
Tests
Command:
php artisan packager:tests
Result:
Packager will go through all maintaining packages (in packages/
) and publish their tests to tests/packages
.
Add the following to phpunit.xml (under the other testsuites) in order to run the tests from the packages:
<testsuite name="Packages"> <directory suffix="Test.php">./tests/packages</directory> </testsuite>
Options:
php artisan packager:tests my-vendor my-package
Remarks: If a tests folder exists, the files will be copied to a dedicated folder in the Laravel App tests folder. This allows you to use all of Laravel's own testing functions without any hassle.
List
Command:
php artisan packager:list
Result:
An overview of all packages in the /packages
directory.
Options:
php artisan packager:list --git
The packages are displayed with information on the git status (branch, commit difference with origin) if it is a git repository.
Remove
Command:
php artisan packager:remove my-vendor my-package
Result:
The my-vendor\my-package
package is deleted, including its references in composer.json
and config/app.php
.
Publish
Command:
php artisan packager:publish my-vendor my-package https://github.com/my-vendor/my-package
Result:
The my-vendor\my-package
package will be published to Github using the provided url.
Check
Command:
php artisan packager:check my-vendor my-package
Result:
The my-vendor\my-package
package will be checked for security vulnerabilities using SensioLabs security checker.
Remarks You first need to run
composer require sensiolabs/security-checker
Issues with cURL SSL certificate
It turns out that, especially on Windows, there might arise some problems with the downloading of the skeleton, due to a file regarding SSL certificates missing on the OS. This can be solved by opening up your .env file and putting this in it:
CURL_VERIFY=false
Of course this means it will be less secure, but then again you are not supposed to run this package anywhere near a production environment.
Issues with timeout
If you are having problems with timeouts when creating new packages, you can now change the config variable timeout in config/packager.php to fix this.
Changelog
Please see changelog.md for what has changed recently.
Contributing
Please see contributing.md for details and a todolist.
Credits
License
The EU Public License. Please see license.md for more information.