/prestissimo

composer parallel install plugin

Primary LanguagePHPMIT LicenseMIT

prestissimo (composer plugin)

Build Status Scrutinizer Code Quality Coverage Status HHVM Status Latest Stable Version Total Downloads License
SensioLabsInsight

composer parallel install plugin.

Requirements

  • composer >=1.0.0 (includes dev-master)
  • PHP >=5.3, (suggest >=5.5, because curl_share_init)
  • ext-curl

Install

$ composer global require "hirak/prestissimo:^0.3"

Uninstall

$ composer global remove hirak/prestissimo

Benchmark Example

288s -> 26s

$ composer create-project laravel/laravel laravel1 --no-progress --profile --prefer-dist

laravel

Config

prestissimo ^0.3.x

Recognize composer's options. You don't need to set any special configuration.

prestissimo ^0.2.x

in local composer.json or ~/.composer/config.json

{
  ...
  "config": {
    "prestissimo": {
      "maxConnections": 6,
      "minConnections": 3,
      "verbose": false,
      "insecure": false,
      "cainfo": "/absolute/path/to/cacert.pem",
      "userAgent": "Your Awesome User Agent",
      "privatePackages": [
        "myorg/private1", "myorg/private2", ...
      ]
    }
  }
  ...
}

maxConnections (int)

  • default: 6

Limit connections for parallel downloading.

verbose (bool)

  • default: false

CURLOPT_VERBOSE option.

insecure (bool)

  • default: false

If insecure is true, this plugin doesn't verify all https certs. (CURLOPT_SSL_VERIFYPEER is off) You SHOULD NOT change this option.

cainfo (string)

  • default: "" (empty)

An absolute path to cacert.pem

userAgent (string)

  • default: "" (empty)

User Agent for downloading. CURLOPT_USERAGENT option. If userAgent is empty, composer user agent is used.

privatePackages (string[])

  • default: empty

If you list packages in this option, the local redirector(api.github.com -> codeload.github.com) will be off.

Composer authentication

It is also recommended to use composer's authentication as you may run into access errors otherwise due to request restriction for anonymous user for external services like github.

For github.com you can use an auth.json with an oauth access token placed on your on the same level as your composer.json:

{
    "github-oauth": {
        "github.com": "YOUR_GITHUB_ACCESS_TOKEN"
    }
}

License

MIT License. See the LICENSE file.