Skip to content

sebastienheyd/laravel-packager

 
 

Repository files navigation

Laravel Packager

Latest Version on Packagist Total Downloads Build Status StyleCI

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 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 and creates a service provider.

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.

$ php artisan packager:new MyVendor/MyPackage

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 author/repository
$ php artisan packager:git author/repository
$ php artisan packager:get https://github.com/author/repository
$ php artisan packager:git https://github.com/author/repository

If you specify only the package name to get, packager:get and packager:git will ask packagist API to get the repository URL.

If you specify the full URL instead of the package name, it will be directly used as the repository URL. This can be useful to get repository content from your personal hosting. To work with packager:get, you have to declare the url template associated with your personal hosting domain in the configuration file to allow zip file download, packager:git is not impacted.

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.

Options:

$ php artisan packager:git 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.

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 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.

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 MyVendor MyPackage

Result: The MyVendor\MyPackage package is deleted, including its references in composer.json and config/app.php.

Publish

Command:

$ php artisan packager:publish MyVendor MyPackage https://github.com/myvendor/mypackage

Result: The MyVendor\MyPackage package will be published to Github using the provided url.

Check

Command:

$ php artisan packager:check MyVendor MyPackage

Result: The MyVendor\MyPackage 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.

About

A cli tool for creating Laravel packages

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%