....

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

  1. Самый первые раз при развороте системы.
  2. Когда у вас что-то перестало работать (посло того, как товарищи обновили репу, а значит composer.lock) -- то есть, чтобы подтянуть изменения на локальную машину.

Когда (и как) запускать composer update

  1. Когда вы действительно хотите обновить выкачиваемые пакеты (а значит и 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

Здесь можно оставить комментарий!