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.
Via Composer
$ composer require jeroen-g/laravel-packager
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.
Optional you can publish the configuration to provide an own service provider stub.
$ php artisan vendor:publish --provider="JeroenG\Packager\PackagerServiceProvider"
Command:
$ php artisan packager:new MyVendor MyPackage
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, creates a service provider, registers the package in config/app.php and the app's composer.json.
Options:
$ php artisan packager:new MyVendor MyPackage --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.
Remarks: The new package will be based on league/skeleton, plus a Laravel service provider.
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 config/app.php
and 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.
Options:
$ php artisan packager:get https://github.com/author/repository --branch=develop
$ php artisan packager:get https://github.com/author/repository MyVendor MyPackage
$ php artisan packager:git https://github.com/author/repository MyVendor MyPackage
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.
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 MyVendor MyPackage
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.
Command:
$ php artisan packager:list
Result:
An overview of all packages in the /packages
directory.
Command:
$ php artisan packager:remove MyVendor MyPackage
Result:
The MyVendor\MyPackage
package is deleted, including its references in composer.json
and config/app.php
.
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
Please see changelog.md for what has changed recently.
Please see contributing.md for details.
The EU Public License. Please see license.md for more information.