phar-io / composer-distributor
Base Code for a composer plugin that installs PHAR-files
Fund package maintenance!
Other
Installs: 134 725
Dependents: 4
Suggesters: 0
Security: 0
Stars: 12
Watchers: 3
Forks: 2
Open Issues: 4
Requires
- php: ^7.3 || ^8.0
- composer-plugin-api: ^1.1 || ^2.0
- ext-dom: *
- ext-libxml: *
- phar-io/filesystem: ^2.0
- phar-io/gnupg: ^1.0
Requires (Dev)
- composer/composer: ^2.0
- phpunit/phpunit: ^9.4
README
If you have a tool that behaves like a binary and want to distribute this tool as a PHAR file instead of the source-code but don't want to give up the convenience to install your tool via Composer you can use this library to create a Composer-Plugin that deals with this in no time.
Motivation
Tools like PHPUnit
, PHPStan
, Psalm
and many others are best installed as PHAR to avoid
version conflicts between your dev tools and your own source code. But since so many developers
just want to use Composer
to install all the tools this project was created to simplify the
deployment of PHAR files via Composer
.
Create your own
To create a Composer-Plugin that installs your PHAR files follow these 3 steps.
Step 1 - Create your Composer-Plugin
The easiest way is to run the following command and follow the instructions.
composer create-project phar-io/mediator /path/to/your/directory/
This will create the plugin in the specified directory.
Make sure the information in your distibutor.xml
configuration is correct.
<?xml version="1.0" encoding="UTF-8"?> <distributor xmlns="https://phar.io/composer-distributor" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://phar.io/xml/distributor/1.0/schema.xsd" packageName="yournamespace/pluginname" keyDirectory="keys"> <phar name="pharname" file="https://github.com/yournamespace/pluginname/releases/download/{{version}}/pharname.phar" signature="https://github.com/yournamespace/pluginname/releases/download/{{version}}/pharname.phar.asc"/> </distributor>
Step 2 - Create a Composer package for your plugin on packagist
Create a git repository for your plugin on the platform of your choosing. Then head over to packagist.org and set up a Composer package for your plugin.
⚠️ REMINDER ⚠️
Remember to tag your plugin repository as well whenever you release a new version.
Step 3 - Enjoy your PHAR deployment
Now everybody can install your PHAR by running the following command.
composer require --dev yournamespace/yourpluginname