Composer PSR-4 (менеджер пакетов), подгрузчик компонентов и зависимостей в PHP
# -------------------------------------------------------------------
# PHP Composer (установка)
# -------------------------------------------------------------------
- https://getcomposer.org/download/
- https://packagist.org/
# -------------------------------------------------------------------
# Описание
# -------------------------------------------------------------------
- Название пакета состоит из [Автор(Огранизация)]/[Пакет]
- composer.json -> располагается в корне проекта
- composer.lock -> добавляется в git, содержит дерево зависимостпей и версий загруженных пакетов
- Подключение автозагрузчика require_once __DIR__ . '/vendor/autoload.php';
- "*" - любая версия пакета
- vendor/bin/... содержит исполняемые команды. .bat (для Windows).
- Что бы обратиться из корня проекта нужно писать "php ./vendor/bin/phinx init"
# -------------------------------------------------------------------
# Команды
# -------------------------------------------------------------------
>> composer init
>> composer info
>> composer -v
>> composer --version
>> composer run-script build:app
>> composer install
>> composer update
>> composer require symfony/symfony
>> composer require symfony/symfony --dev // установка с флагом дев (только для разработки)
>> composer dump-autoload // обновить файл autoloader.php
>> composer dump-autoload -o // оптимизированный вариант
>> php ./vendor/bin/phinx init // запуст скриптов из корня проекта
# -------------------------------------------------------------------
# Разное
# -------------------------------------------------------------------
// Столкнувшись с конфликтом "composer.lock" необходимо принять версию composer файлов из удаленной ветки
>> git checkout origin/{base} -- composer.lock composer.json
// Обновление через php
>> which php8.1
>> php8.1 -d memory_limit=-1 /usr/local/bin/composer-phar update --no-plugins --ignore-platform-reqs
https://raw.githubusercontent.com/iv-litovchenko/maptex_content/master/dependency-managers || composer.txt
#200 | 2022-08-12 08:57:24
Проверено
#207 | 2022-08-18 13:03:59
Проверено
php composer install -n --ignore-platform-req=ext-gd
#208 | 2022-08-19 06:33:56
Проверено
Разница относительно использования файлов composer.json и composer.lock:
- composer install -- проводит установку, в соответствии с инструкциями файла composer.json, при этом актуальные версии пакетов берутся из файла composer.lock (если он есть), если composer.lock, то он создаётся с указанием установленных версий (с точными их идентификаторами).
- composer update -- в соответствии с опциями файла composer.lock поищет в сети наиболее новые версии пакетов, обновит локальные копии пакетов и поправит composer.lock (а значит, при добавлении его в репу, ваши товарищи по команде тоже выгрузят уже более новые версии)
Когда запускать composer install
- Самый первые раз при развороте системы.
- Когда у вас что-то перестало работать (посло того, как товарищи обновили репу, а значит composer.lock) -- то есть, чтобы подтянуть изменения на локальную машину.
Когда (и как) запускать composer update
- Когда вы действительно хотите обновить выкачиваемые пакеты (а значит и composer.lock), обычно при использовании системы контроля версий эти обновления оформляются отдельным коммитом (для изменений файла composer.lock).
#210 | 2022-08-19 07:05:04
Проверено
да, но в случае разворачивание в проде нужно добавлять "--no-dev", чтоб пакеты из секции require-dev (файл composer.json) не ушли в прод
#265 | 2022-09-13 12:07:54
Проверено
composer.json < Main
packages/
balunker/
testpackage/
composer.json < Package
src/
TestPackage.php
The main composer.json looks like this:
{
"name": "vagrant/composer-test",
"repositories": [
{
"type": "path",
"url": "packages/*/*"
}
],
"require": {
"balunker/testpackage": "*"
}
}
While the package composer.json looks like so:
{
"name": "balunker/testpackage",
"autoload": {
"psr-4": {
"Balunker\\": "src/"
}
}
}
$ composer update -vvv
Здесь можно оставить комментарий!