noccylabs/pharlite

$ git tag


$ git branch
* master

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:

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