Рубрики
Uncategorized

Советы композитора, которые должны знать разработчики PHP

Автор оригинала: David Wong.

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

composer update foo/bar

Кроме того, этот метод также может быть использован для решения “проблемы с предупреждающей информацией”. Вы, должно быть, видели такое предупреждающее сообщение:

Warning: The lock file is not up to date with the latest changes in
composer.json, you may be getting outdated dependencies, run update to update them.

Вытри, что случилось? Не паникуйте! Если вы редактируете composer. джсон, ты должен увидеть эту информацию. Например, если вы добавляете или обновляете такие сведения, как описания библиотек, авторы, дополнительные параметры или даже просто добавляете пробел, вы изменяете md5sum файла. Композитор предупредит вас о разнице между значением хэша и записью в composer. замок.

Так что же нам делать? Команда обновить обновляет файл блокировки, но если добавлено только несколько описаний, она не должна предназначаться для обновления каких-либо библиотек. В этом случае просто ничего не обновляйте:

$ composer update nothing
Loading composer repositories with package information
Updating dependencies
Nothing to install or update
Writing lock file
Generating autoload files

Таким образом, Composer не будет обновлять библиотеку, но обновит composer. замок. Обратите внимание, что ничто не является ключевым словом команды обновления. Это просто не результат ничего. Если вы наберете foo bar, результат будет таким же.

Если используемая вами версия композитора достаточно новая, вы можете напрямую использовать опцию — lock:

composer update --lock

Возможно, вам покажется слишком громоздким изменять composer. JSON для каждой устанавливаемой библиотеки, поэтому вы можете напрямую использовать команду require.

composer require "foo/bar:1.0.0"

Этот метод также можно использовать для быстрого запуска нового проекта. Команда init имеет опцию — require для автоматической записи composer. json: (Обратите внимание, что мы используем – n, поэтому нам не нужно отвечать на вопросы.)

$ composer init --require=foo/bar:1.0.0 -n
$ cat composer.json
{
    "require": {
        "foo/bar": "1.0.0"
    }
}

При инициализации вы пробовали команду create-project?

composer create-project doctrine/orm path 2.2.0

Это автоматически клонирует репозиторий и проверяет указанную версию. Эту команду легко использовать при клонировании библиотек. Нет необходимости искать исходный URI.

Composer автоматически заархивирует пакет dist, загруженный вами в прошлом году. По умолчанию пакеты dist используются для помеченных версий, таких как “symfony/symfony”, “v2.1.4”, или подстановочные знаки или интервалы версий “2.1. *” или.2, < 2.3-dev” (если вы используете stable в качестве минимальной стабильности).

Пакеты Dist также могут использоваться для таких ветвей, как dev-master, а Github позволяет загружать сжатые пакеты, на которые ссылается git. Чтобы принудительно использовать сжатые пакеты, а не клонировать исходный код, вы можете использовать опцию установка и обновление — предпочтение-удаление.

Вот пример (я использовал опцию — профиль, чтобы показать время выполнения):

$ composer init --require="twig/twig:1.*" -n --profile
Memory usage: 3.94MB (peak: 4.08MB), time: 0s

$ composer install --profile
Loading composer repositories with package information
Installing dependencies
  - Installing twig/twig (v1.12.2)
    Downloading: 100%

Writing lock file
Generating autoload files
Memory usage: 10.13MB (peak: 12.65MB), time: 4.71s

$ rm -rf vendor

$ composer install --profile
Loading composer repositories with package information
Installing dependencies from lock file
  - Installing twig/twig (v1.12.2)
    Loading from cache

Generating autoload files
Memory usage: 4.96MB (peak: 5.57MB), time: 0.45s

Здесь сжатый пакет twig/twig:1.12.2 хранится в ~/.composer/cache/files/twig/twig/1.12.2.0-v1.12.2.zip. Используйте его непосредственно при переустановке пакетов.

Клонирование исходного кода проще, чем загрузка пакетов, когда вам нужно изменить библиотеки. Вы можете использовать — предпочтительный – исходный код для принудительного выбора клонированного исходного кода.

composer update symfony/yaml --prefer-source

Далее вы можете изменить файл:

composer status -v
You have changes in the following dependencies:
/path/to/app/vendor/symfony/yaml/Symfony/Component/Yaml:
    M Dumper.php

При попытке обновить измененную библиотеку Composer напомнит вам, следует ли отказаться от изменения:

$ composer update
Loading composer repositories with package information
Updating dependencies
  - Updating symfony/symfony v2.2.0 (v2.2.0- => v2.2.0)
    The package has modified files:
    M Dumper.php
    Discard changes [y,n,v,s,?]?

Наконец, при развертывании кода в рабочей среде не забывайте оптимизировать автоматическую загрузку:

composer dump-autoload --optimize

То же самое можно использовать при установке пакетов — оптимизация-автозагрузчик. Без этой опции вы можете столкнуться с потерей производительности от 20% до 25%.

Первоначальный адрес: http://www.phpcomposer.com/5-…

Оригинал: “https://developpaper.com/composer-tips-that-php-developers-should-know/”