2.6 KiB
PharLite: Easy PHAR generator
Make sure PHP can write PHARs in your php.ini
before trying anything else.
composer.json
options
{
...
"extra": {
"phar": {
"include": [ ... ],
"exclude": [ ... ],
"index": "web/index.php",
"output": "pharname.phar",
"strip": "none",
"metadata": { ... },
"preload": [ ... ],
}
}
}
include
and exclude
Specify additional files or paths to include or exclude.
index
: Create a web phar
Specifying this option will automatically opt to create a web phar. The value should point to a valid index file or router.
output
: Output filename
Defines the output filename. Defaults to output.phar
strip
: Trim file sizes
Valid values are none
, all
or an array of patterns to match.
"strip": "all" Strip all files
"strip": "none" Include everything as is (default)
"strip": [ "src/*.php" ] All *.php in src/ and subdirectories
Stripping will remove comments and whitepace in files, which makes them smaller but can confuse code that dynamically parses f.ex. docblock comments for routing info etc.
metadata
: Phar metadata
Define additional metadata to write to the phar. The following keys are automatically written:
Key | Type | Description |
---|---|---|
phar.generator |
string | The string PharLite/x.y (PHP/x.y) |
phar.type |
string | One of app , library or web |
package.name |
string | The composer package name |
package.version |
string | The composer package version |
preload
: Files to preload
If defined, this should be an array of files to include after composer.json
in the
stub.
Building
To build a phar from a composer project, just run pharlite
. It will build one of
the following:
- Library phar - A single file containing a composer library, complete with autoloaders and all that magic.
- Application phar - An executable file containing an application and its dependencies.
- Web phar - A complete website in a single file
If more than one bin
is defined in the composer.json
, the first one will be
the default one, but all defined bins will be available by symlinking the phar
to the respective names.
"bin": [ "bin/foo", "bin/bar" ]
output.phar, foo.phar, foo, hello.phar -> calls bin/foo
bar.phar, bar -> calls bin/bar