Русский
Русский
English
Статистика
Реклама

Composer пакеты

Перевод Composer 2 Что нового?

24.10.2020 22:20:03 | Автор: admin

Composer, менеджер зависимостей для PHP, был выпущен около 8 лет назад, а сегодня опубликовали новую версию, 2.0. За эти годы Composer получил множество новых функций и не отставал от стандартов PHP. Вторая версия совместима со старыми проектами, но привнесет еще несколько замечательных новых функций. В этой статье расскажу о них подробнее.

Ускорение и оптимизация

В этом релизе была улучшена производительность. Теперь он не учитывает уже установленные пакеты, в результате обновление проходит на много быстрее. Также улучшили работу с памятью и процессором.

Команда установки стала умнее. Теперь она не изменяет папку vendor до тех пор, пока не гарантирует, что все пакеты установлены. Это позволяет избежать потери времени на их удаление в случае ошибок во время процесса.

Одной из лучших функций, для меня, стала параллельная загрузка, которая теперь поддерживается из коробки, и нам не нужно устанавливать дополнительные пакеты, как hirak/prestissimo, чтобы это работало.

Composer v2 почти в 2 раза быстрее, при установке laravel/laravel без кэширования.Composer v2 почти в 2 раза быстрее, при установке laravel/laravel без кэширования.

Поддержка оффлайн

Composer представил возможность использовать его в оффлайн режиме. Это может быть интересно для бенчмарков или при возникновении проблем с подключением к интернету, поэтому вам не нужно удалять Composer install/update из списка команд.

Чтобы это заработало, нужно добавить COMPOSER_DISABLE_NETWORK=1 при выполнении команд:

COMPOSER_DISABLE_NETWORK=1 composer install

или установите его в переменных среды. Он выдаст предупреждение о том, что сеть отключена.:

https://repo.packagist.org could not be fully loaded (Network disabled, request canceled: https://repo.packagist.org/packages.json), package information was loaded from the local cache and may be out of date

кроме того, вы увидите сообщение для пакетов, без кэширования:

The required git reference for gabrielanhaia/laravel-circuit-breaker is not in cache and network is disabled, aborting

Поддержка --dry-run для require и remove

Эта опция уже была доступна при обновлении пакетов (composer update --dry-run. Она позволяет нам увидеть, что произойдет при запуске команды, просто отображая данные в терминале, без реальных изменений в вашем проекте или папке vendor.

Composer 2.* дает возможность использовать опцию с composer require и composer remove что делает нашу жизнь проще

Предотвращение проблем при работе от root

При выполнении команд от пользователя root теперь требуется подтверждение, чтобы предотвратить наши ошибки.

В предыдущих версиях, когда вы пытались выполнить команду, она вызывала следующее сообщение:

Do not run Composer as root/super user! See https://getcomposer.org/root for details

С Composer 2.* вы должны подтвердить выполнение:

https://getcomposer.org/root for detailsContinue as root/super user [yes]?

Если интерактивный режим не поддерживается вашим терминалом, то сообщение не покажется. Вы можете обойти это сообщение, с командой --no-interaction

composer install --no-interaction

Канонические репозитории

Эта функция решает определенную проблему, с которой сталкиваются несколько разработчиков при использовании одного и того же пакета в разных репозиториях. Composer 1.0 следовал определенному порядку при установке/обновлении своих пакетов. Он начал искать пакеты в своем списке репозиториев до тех пор, пока пакет не будет найден (также последняя версия).

Иногда это было не совсем ожидаемое поведение при работе с различными версиями пакетов в других репозиториях (используемых одним и тем же проектом). Представьте себе, что иногда вы хотите загрузить пакет из своего частного репозитория, а не из packagist, в котором есть пакет с тем же именем.

По умолчанию, в composer 2.x, все репозитории являются каноническими. Composer 1.x рассматривал все репозитории как неканонические, и для того, чтобы поменять поведение вручную, вы можете сделать:

{    "repositories": [        {            "type": "composer",            "url": "https://example.org",            "canonical": false        }    ]}

Вы также можете отфильтровать пакеты, которые репозиторий сможет загрузить, либо выбрав те, которые вы хотите, либо исключив те, которые вы не хотите.

Например, здесь мы хотим выбрать только пакет foo/barи все пакеты из some-vendor/из определенного composer репозитория.:

{    "repositories": [        {            "type": "composer",            "url": "https://example.org",            "only": ["foo/bar", "some-vendor/*"]        }    ]}

А в этом примере мы исключаем toy/packageиз репозитория, который мы, возможно, не захотим загружать в этот проект.

{    "repositories": [        {            "type": "composer",            "url": "https://example.org",            "exclude": ["toy/package"]        }    ]}

И only, и exclude должны быть массивами с именами пакетов, которые также могут содержать знаки (*), которые соответствуют любым символам.\

Игнорировать определенное требование платформы

Если по какой-то причине вы хотите проигнорировать какое-либо определенное требование платформы, вы можете просто запустить команду: composer install --ignore-platform-req php

Она пропустит требование для PHP или конкретной версии. Если вы собираетесь игнорировать все требования, вам следует использовать команду, уже доступную в предыдущих версиях --ignore-platform-reqs

Другие обновления

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

Подробнее..
Категории: Php , Composer , Composer пакеты

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru