Пакетный менеджер Composer при выполнении команды install или update обращается к файлу composer.json и последовательно обрабатывает указанные в нём пакеты. Если пакетов много, то эта процедура займёт довольно продолжительное время. Проблему могло бы решить распараллеливание процессов. И как раз для решения данной задачи чуть больше года назад был создан плагин Prestissimo. Он позволяет ускорить загрузку пакетов на порядок.

Для его установки в консоли нужно выполнить простую команду require.

$ composer global require  hirak/prestissimo

Обратите внимание, что устанавливает данный плагин нужно глобально.

После установки плагин будет срабатывать на каждое действие установки и обновления пакетов. Он параллельно подгрузит все зависимости и передаст их композеру.

В качестве профита от установки автор приводит результаты теста установки Laravel:

  • 288 сек. — до установки плагина.
  • 26 сек. — после установки.
  • Как видим, разница значительная.

    Кроме того, Prestissimo даёт возможность более тонкой настройки в зависимости от предпочтений. Причём сделать это можно как глобально, так и для каждого проекта в отдельности. В первом случае, нужно создать/отредактировать файл ~/.composer/config.json. Во втором, редактируем файл composer.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 — максимальное количество соединений.
  • minConnections — минимальное количество соединений.
  • verbose — настройка CURLOPT_VERBOSE.
  • insecure — если включено, то не проверяет https сертификаты (настройка CURLOPT_SSL_VERIFYPEER выключена). Не рекомендуется менять эту настройку.
  • capath — абсолютный путь до cacert.pem при работе с сертификатами.
  • userAgent — юзер-агент, который указывается при скачивании пакетов (настройка CURLOPT_USERAGENT). Если не задано, то используется юзер-агент от composer.
  • privatePackages — список приватных пакетов. Для перечисленных пакетов локальный редиректор с api.github.com на codeload.github.com будет отключен.
  • Я использую такой конфиг:

    {
      ...
      "config": {
        "prestissimo": {
          "maxConnections": 10,
          "minConnections": 3,
        }
      }
    }
    
    27 марта 2017, 11:28   566     0

    Комментарии ()

      Вы должны авторизоваться, чтобы оставлять комментарии.

      Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.