php-pharlite/README.md

88 lines
2.6 KiB
Markdown

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