composer json что это

Composer json что это

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

composer.json : Настройка проекта

Чтобы начать использовать Composer в Вашем проекте, всё, что Вам нужно это composer.json файл. Этот файл описывает зависимости Вашего проекта и может содержать также другие метаданные.

Как Вы можете видеть require принимает объект состоящий из имени пакета (например monolog/monolog ) и версии пакета (например 1.0.* ).

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

По умолчанию только стабильные релизы принимаются во внимание. Если бы Вы хотели бы также получить зависимости RC, beta, alpha или dev версий, Вы можете это сделать с помощью флагов стабильности (stability flags). Чтобы применить это для всех пакетов, вместо того чтобы делать это для каждой зависимости, Вы также можете использовать настройку минимальная стабильность (minimum-stability).

Чтобы установить зависимости для Вашего проекта просто запустите команду install

Вы заметите, что команда install также создала файл composer.lock

composer.lock фиксирует Ваши приложения (наряду с composer.json ) в системе контроля версий.

Это важно потому, что команда ‘install’ проверяет присутствует ли файл блокировки, и если это так, он загружает указанные там версии (независимо от того, что говорит composer.json ).

Это означает, что любой, кто настраивает проект, будет загружать точно такие же версии зависимостей. Ваш CI сервер, рабочая машина, другие разработчики в Вашей команде, все они и всё работает на одних и тех же зависимостях, что снижает потенциал для ошибок, затрагивающих только некоторые части развертывания. Даже если Вы разрабатываете самостоятельно, через шесть месяцев при переустановке проекта, Вы можете быть уверены, что установленные зависимости по-прежнему работают даже если зависимости выпустили много новых версий с тех пор.

Примечание: Composer отобразит предупреждение при выполнении команды install если composer.lock и composer.json не синхронизированы.

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

Packagist является главным репозиторием (хранилищем) Composer. Репозиторий Composer это основной источник пакетов: место, откуда Вы можете получить различные пакеты. Packagist стремится быть центральным репозиторием который используют все. Это означает, что можно автоматически затребовать require для любого пакета который доступен здесь.

Если Вы перейдёте на веб-сайт Packagist (packagist.org), здесь Вы можете просматривать и искать пакеты.

Любой проект с открытым кодом используемый с Composer рекомендуется публиковать на Packagist. Библиотекам не обязательно нужно находиться на Packagist чтобы использовать Composer, но это позволяет более быстро обнаруживать их и пробовать их другими разработчиками.

Это делает библиотеку очень простой в использовании третьей стороной. Например: Если Ваш проект зависит от Monolog, Вы можете просто начать использовать классы из него, и они будут видны.

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

В дополнение к PSR-4 автозагрузке Composer также поддерживает PSR-0, classmap и файловую автозагрузку. Смотрите раздел autoload (автозагрузка) для получения большей информации.

Примечание: Composer предоставляет свой собственный автозагрузчик. Если Вы не хотите использовать его одного, Вы можете просто включить файлы vendor/composer/autoload_*.php которые возвращают ассоциативные массивы, позволяя Вам настроить свой собственный автозагрузчик.

Источник

Composer & Packagist 101

Привет, Хабр! Сегодня я хотел бы поговорить с вами о знакомых опытным PHP-девелоперам, но загадочных для новичков, штуках — Composer и Packagist. Не сомневаюсь, что для многих здесь текст не станет откровением. Материал для тех, кому с описанным ниже только предстоит столкнуться.

Вы — PHP-разработчик, и вам нужен хороший менеджер зависимостей — как npm или Bundler? Вам надоело мучаться с pear? И вы не хотите вручную качать библиотеки с сайтов и обновлять все зависимости? Тогда самое время познакомиться с Composer и Packagist.

Основы

Начнем с объяснения, что такое Composer, а чуть позже поговорим и про Packagist. Composer — изначально менеджер зависимостей для PHP на уровне проекта. Это значит, что теперь нам не нужно мучиться с когда-то популярным pear, потому что для каждого проекта нужны свои версии библиотек и прочего. Теперь с помощью Composer все зависимости будут установлены в папку vendor в корне вашего проекта, и проекты не будут конфликтовать. Каждому проекту будет доступен свой набор установленных зависимостей.

Также в composer.json можно задать секцию scripts. Если грамотно ее использовать, можно получить легкий деплой-менеджер. Но изучение этой секции оставляю вам в качестве домашнего задания :).

Как это работает? Нужно просто создать файл composer.json в корне проекта и заполнить его согласно документации. Требуемый минимум в этом файле — набор зависимостей. По сути, это просто json-объект, ключ в котором — название нужного пакета, а значение — нужная для проекта версия. Для указания версий используется semver. Например, если для проекта нужны PHP минимум версии 5.4 и библиотека для логгирования monolog 1.9.*, нужно указать следующий объект require.

Дальше просто нужно в командной строке выполнить команду composer update, и все новые зависимости будут подгружены в папку vendor, и вы сможете их использовать. Да, целиком PHP Composer не подтянет, но проверит, чтобы установленный на машине PHP был нужной версии. А если речь идет о библиотеках, Composer скачает пакет подходящей версии в папку vendor.

Представьте ситуацию: мы наконец-то внедрили в свой проект Composer, вовсю его используем, в общем, мы — молодцы! Но в какой-то момент приходим к ситуации, когда и у разработчиков и на сервере стоят разные версии библиотек. Как быть? Для этого composer рядом с composer.json создает файл composer.lock. В него после команды composer update записывается точная информация о версиях, которые установлены. Его нужно закоммитить в систему контроля версий, и таким образом все разработчики, а также на сервере можно просто выполнить команду composer install, и будут установлены все библиотеки точно таких версий, которые описаны в этом файле.

Читайте также:  что делать если замазали текст на фото

Пишем свой пакет

Любой желающий разработчик имеет право создать свой composer пакет и выложить в Open Source. Этот процесс я и хочу описать дальше.

Composer пакет по сути — это набор файлов, которые можно подключить в любой проект. Всё это можно отсортировать по папкам, как Вам только захочется. Главное, настроить автозагрузку composer. Какая же структура Composer пакета? Обязательным файлом для любого пакета является composer.json. Это файл в котором хранится вся информация про данный пакет: название, описание, список зависимостей, тип лицензии, и так далее. Вот пример composer.json простого пакета.

Name — имя пакета (формат vendor/name).
Type — тип пакета, данный пакет — библиотека
Description — описание пакета.
License — тип лицензии.
Require — список зависимостей данного пакета. Для него требуется версия PHP не менее 5.4.0 и пакет illuminate/support. Все версии описываются по semver.
Autoload — настройки автозагрузки. В данном случае указано, что неймспейс Dataart\Package начинается в папке src. Т. е. у всех файлов, которые лежат в папке src, должен быть неймспейс Dataart\Package. Если, например, хотите создать класс User и сохранить файл класса в папке Models, неймспейс класса User должен быть Dataart\Package\Models.

В папке src хранятся все нужные для работы пакета файлы. Рекомендуется рядом с папкой src сделать папку tests, и покрыть библиотеку тестами. Далее вся папка, в которой лежит composer.json, должна быть закоммичена на Github. Можно на Bitbucket, но все используют именно Github.

Также composer имеет некоторое количество консольных команд, которые призваны ускорить работу с ним.

запустит для вас интерактивную инициализацию composer проекта и, задав несколько основных вопросов, сгенерирует composer.json-файл.

install

считывает composer.json, разрешает зависимости и устанавливает их в папку vendor. Если в папке есть файл composer.lock, будут использованы точные версии, указанные в файле. Это даёт возможность всем разработчикам иметь одинаковые версии всех библиотек.

update

используется, чтобы получить новые версии пакетов, тем самым обновить composer.lock. Также используется, если добавились новые зависимости. Может использоваться также с параметрами. composer update vendor/package1 vendor/package2 обновит только два пакета. Также можно обновить все пакеты одного вендора командой composer update vendor/*

require

добавляет новые зависимости из командой строки. Например, composer require vendor/package:2.* vendor/package2:dev-master. Если не указать версию, composer автоматически подтянет последнюю стабильную версию.

remove

точная противоположность require.

dump-autoload

обновить autoloader, если появились новые классы или правила автолоадинга.

К командам install, update и dump-autoload можно добавить ключ —optimize-autoloader (-o), чтобы конвертировать правила автозагрузки psr-0/4 в «карту классов», чтобы ускорить автозагрузку. Рекомендуется для production окружения.

Open Source It

Закоммитили? Круто, но composer всё равно почему-то не находит пакет и не может его подтянуть для другого проекта. Как быть?

Да, можно указывать конкретные адреса svn/git репозиториев в composer.json, но это неудобно. Намного удобнее иметь какой-то центральный пункт, где есть соответствия пакетов с их адресами репозиториев. Это Packagist.

Он используется для публикации composer пакетов. Опубликовать свой пакет туда очень легко. Достаточно зарегистрироваться на сервисе (или используя Github аккаунт через oAuth2), далее перейти по ссылке Submit Package, указать URL репозитория, а Packagist всё остальное сам подтянет и периодически будет проверять репозиторий на наличие новых версий.

Как происходит версионирование? Версионировать надо согласно системе semver. А указывать версии пакетов, используя тэги в системе контроля версий. Всё очень просто!

Создавайте свои пакеты, публикуйте их и становитесь полноценным участником Open Source сообщества.

Источник

Руководство по использованию Composer для начинающих

В этой статье рассмотрим, что такое Composer, как его установить и использовать. Другими словами, разберем как его «готовить» для начинающих.

Что такое PHP Composer

Например, для того чтобы в некоторый разрабатываемый проект добавить сторонние библиотеки, в нём можно просто создать «composer.json» и описать в этом файле все необходимые зависимости. После этого для установки всех требуемых внешних php пакетов в проект достаточно будет ввести в консоли всего одну команду ( composer install ).

Кроме этого, Composer применяется не только для установки php библиотек. С помощью Composer осуществляется также установка различных php фреймворков (Laravel, Yii2, Symfony и др.) и CMS (Drupal, MODX 3 и др.).

Composer представляет собой обычный php скрипт, т.е. программу, написанную на языке php.

Основная цель этой программы заключается в том, чтобы предоставить веб-разработчику удобный инструмент, с помощью которого он сможет очень просто загружать и устанавливать пакеты в проект, их обновлять, а также при необходимости осуществлять их удаление. Все эти действия Composer позволяет выполнить с помощью ввода всего одной или нескольких команд. Удобно, не правда ли?

В качестве репозитория пакетов Composer по умолчанию использует packagist.org.

При установке php пакетов Composer не просто устанавливает их, он также устанавливает все зависимости, от которых эти пакеты зависят. Т.е., например, если загружаемая библиотека будет зависеть от 3 других пакетов, а каждая из них, ещё в свою очередь от нескольких и так далее, то Composer всё это установит автоматически. В противном случае, т.е. без использования Composer, загрузку и установку основных пакетов, а также всех зависимостей придётся выполнять самостоятельно.

Загрузку сторонних библиотек Composer выполняет в папку «vendor», которую данный php скрипт создаёт в корневой директории проекта. Кроме этого, он ещё создаёт специальный файл «autoload.php», включив который в проект вы сразу же подключите к нему все ранее загруженные им библиотеки.

Читайте также:  риа перевод денег в каких банках москвы на сегодня

Основное назначение файла «composer.lock» заключается в полном сохранении среды, в которой осуществлялась разработка и тестирование проекта.

Работа с Composer осуществляется в основном в консольном или терминальном режиме, т.е. с помощью ввода команд через командную строку.

Официальный сайт Composer расположен по адресу https://getcomposer.org

Если вы использовали npm, то Сomposer – это нечто подобное, только не для «node.js», а для php.

Как установить Composer

Установка Composer может выполняться по-разному. Она также зависит от используемой среды и операционной системы. Рассмотрим различные варианты.

Установка Composer в Ubuntu, выполняющейся в подсистеме Windows для Linux (WSL)

Как установить локальный веб-сервер для разработки php проектов на подсистему Windows для Linux в Windows 10 можете ознакомиться в этой статье.

Для установки Composer в Windows 10 на подсистему Windows для Linux (WSL) необходимо выполнить следующие команды:

Первая команда выполняет загрузку скрипта установщика с сайта «getcomposer.org». Вторая команда выполняет запуск этого установщика. В процессе своей работы установщик проверит некоторые настройки «php.ini», предупредит вас, если они установлены неправильно, а затем загрузит последний «composer.phar» в текущий каталог. Последняя или третья команда просто удалит загруженный установщик, который ранее использовался для установки Composer.

Phar — это исполняемые файлы (программы), которые выполняются посредством php интерпретатора.

Если при установке php пакетов у вас выводиться ошибки на отсутствие прав записи в каталог «

/.composer/cache», то в командной строке просто запустите данную команду:

Эта команда переместит файл «composer.phar» из директории пользователя в директорию «/usr/local/bin» и уберёт у него расширение «phar».

Установка Composer на OpenServer (в Windows)

В OpenServer по умолчанию уже установлен Composer. Находится он в зависимости от выбранной версии PHP (устанавливается в настройках OpenServer) в директории «OSPanel\modules\PHP_*\».

Работа с Composer в OpenServer по умолчанию осуществляется в собственной консоли. Для того чтобы открыть эту консоль необходимо нажать на значок Open Server правой кнопкой мыши в области уведомлений и в открывшемся контекстном меню найти соответствующий пункт.

В консоли для проверки того, что Composer подключен, например, можно ввести команду:

Эта команда также отобразит версию Composer.

Если при выполнении этой команды отобразится сообщение, что версия Composer устарела, то её можно обновить. Осуществляется это посредством выполнения следующей команды:

Установка Composer на хостинг

Для установки Composer на хостинг, можно просто скачать данную программу самостоятельно, а затем загрузить её в корневую директорию проекта, например, с помощью FTP.

Самостоятельная загрузка нужной версии Composer выполняется со страницы «Download». Версии программы на данной странице расположены в разделе «Manual Download».

Выполнение команд на удалённом сервере обычно осуществляют с помощью SSH. По умолчанию на shared хостингах данный сетевой протокол выключен. Для его включения необходимо найти соответствующий пункт в панели управления, открыть его и нажать в нем на кнопку «Включить SSH».

Если вы пользователь Windows 10, то клиент SSH включен в систему по умолчанию. Поэтому для выполнения команд на удаленном сервере, можно в этой версии Windows не устанавливать никакой дополнительный софт, а например, воспользоваться программой «Командная строка» или «Windows PowerShell».

Основные команды Composer

Разберем основные команды Composer для начинающих.

Если вы используете «composer.phar» локально, то приведённые команды необходимо соответственно изменить в зависимости от того как настроено ваше окружение.

Например, если файл «composer.phar» находится в текущем каталоге и интерпретатор php доступен без указания пути к нему, то установка пакета будет осуществляться так:

Установка пакета

Установка пакета через Composer осуществляется посредством выполнения следующей команды:

vendor — это имя поставщика php пакета, а package — это его название.

Например, добавление в проект пакета twig через composer будет осуществляться так:

Команда require не только загрузит требуемую библиотеку в проект, но и пропишет её ещё в файле «composer.json», т.е. обновит его. Если устанавливаемый пакет зависит от других библиотек, то они также будут установлены или обновлены. Кроме этого ещё будет обновлён файл «composer.lock».

Установка всех пакетов в проект

Установка сразу всех пакетов в проект осуществляется посредством команды:

Эта команда работает следующим образом:

Обновление зависимостей

Команда для обновления установленных библиотек:

Эта команда обновит все зависимости установленные в проекте до последних версий (в соответствии с «composer.json») и файл «composer.lock».

Если необходимо обновить не все пакеты, а один или несколько, то их необходимо перечислить через пробел.

Команда для обновления одной библиотеки:

Удаление пакета

Команда Composer для удаления пакета из проекта:

Для удаления одновременно нескольких пакетов можете их перечислить через пробел:

Обновление Composer

Команда для обновления Сomposer до последней версии:

Обновление lock файла без обновления пакетов

Для обновления файла «composer.lock» без обновления самих пакетов:

Создать новый проект

Создание нового проекта из указанного пакета в текущую директорию выполняется так:

Создание нового проекта в указанную директорию выполняется так:

Вывод всех установленных библиотек

Команда для отображения всех установленных php пакетов:

Проверка валидности файла «composer.json»

Команда с помощью которой можно проверить валидность файла «composer.json»:

Вывод списка всех доступных команд

Вывести на экран все доступные команды Composer можно так:

Очистка внутреннего кэша пакетов Composer

Выполнение очистки внутреннего кэша пакетов Composer осуществляется с помощью команды:

Получение подробной справки по команде

Вывод подробной справки по команде:

Например, вывести подробную инструкцию по использованию команды require можно следующим образом:

Вывести зависимости для указанного пакета

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

Создание базового варианта файла composer.json с помощью мастера

Создание базового варианта файла composer.json с помощью мастера, т.е. посредством ответов на вопросы:

Читайте также:  что делать если ipv6 без доступа к сети

Примеры использования Composer для установки PHP фреймворков и CMS

Установка фреймворка Laravel в текущую директорию осуществляется через Composer посредством ввода следующей команды:

Установка последней версии фреймворка Yii2 через Composer:

Установка разрабатываемой версии MODX Revolution 3 через Composer:

Установка через Composer нового приложения Symfony, предназначенного для создания традиционных веб-приложений:

Установка Symfony для использования его для создания микросервисов, консольных приложений или API осуществляется так:

Установка Drupal через Composer:

Как удалить Composer

Composer — это файл. В большинстве случаев для удаления его достаточно просто удалить.

Если вы не помните куда был установлен Composer, то просто поищете, например, с помощью встроенной системы поиска операционной системы этот файл.

Но так удалять не всегда корректно, все зависит от того, как вы его устанавливали. Если у инструмента, с помощью которого вы его устанавливали, есть возможность и его удаление, то выполняйте это действие с помощью этого инструмента.

Например, если вы Composer устанавливали с помощью инструмента apt-get, то и используйте его для удаления этой программы.

Например, если вы устанавливали Сopmoser в Windows с помощью программы Composer-Setup.exe, то удаления программы выполняйте стандартным образом через «Приложения и возможности» (только в Windows 10) или через «Удаление или изменение программы».

Дополнительно можно удалить папку с внутренним кэшем Composer. В Linux эта папка расположена в «/home//.composer», в Windows – «C:\Users\\AppData\Roaming\Composer».

Источник

Разберёмся с Composer

В этой статье я постараюсь раскрыть некоторые моменты, которые часто бывают непонятны начинающим осваивать Composer пользователям. Я не буду рассказывать что такое Composer и как установить. Такой информации уже предостаточно. А вот что такое composer.lock файл или почему команда install не устанавливает указанный пакет смогут ответить не все. Поэтому давайте пробежимся по этим вопросам.

При рассмотрении возможностей Composer я буду ссылаться на фреймворк Laravel, так как пишу для пользователей MODX, которые как и я хотели бы познакомится с этим фреймворком поближе.

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

Composer install

Пакеты, которые Composer должен установить перечислены в секциях «require» и «require-dev». Это так называемые зависимости. Для каждого пакета указана версия. У многих, кстати, часто возникает вопрос по назначению этих секций. Мы это рассмотрим дальше. А пока вернёмся к установке.

и, например, на момент разработки у вас установлена версия 1.1, то в composer.lock будет указана версия 1.1. Тогда ваш коллега при установке получит ту же версию пакета, которая установлена у вас, даже если вышла новая версия 1.2. Именно поэтому практически всегда проекты имеют файл composer.lock в репозитории. Ещё один плюс — в этом файле указаны все зависимости всех пакетов, поэтому при разворачивании проекта не нужно заново определять все эти зависимости, что существенно экономит время.

Composer update

Команда update имеет следующий синтаксис:

Надеюсь вам всё понятно. Если да, то кивните.

Composer require

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

Можно указывать несколько пакетов подряд.

Composer remove

Никогда не удаляйте пакеты вручную из директории vendor! Это сломает зависимости Composer.

Для начала этого вполне хватит, чтобы понимать как работает Composer. В дальнейшем, когда неуверенность пройдёт, освоить другие команды будет уже проще. А теперь как и обещал расскажу чем отличаются секции «require» и «require-dev».

Зависимости «require» и «require-dev»

Давайте разберёмся для чего они нужны. В секции «require» указываются пакеты, которые необходимы для работы проекта (сайта или пакета). Это могут быть комментарии, админка, функции для работы с датами и т.п. В секции «require-dev» указывают пакеты, необходимые только для разработки и не влияющие на работу самого проекта.

Но внимательные заметят, что при установке или обновлении Composer устанавливает пакеты из обоих секций. Тогда возникает вопрос — а зачем их делить? Всё просто. Это разделение условное и им управляете вы сами. Composer сам не может определить, где он запускается — на сервере разработки или продакшене. Поэтому, при разворачивании проекта на production сервере, нужно указать Composer, чтобы он не устанавливал пакеты для разработки из секции «require-dev».

Ещё очень важное замечание. Пакеты из секции «require-dev» устанавливаются только для корневого пакета. Т.е. у зависимых пакетов Composer эту секцию не учитывает. Логика простая — если вы хотите доработать какой-то пакет и вам нужны пакеты для разработки, то установите его напрямую.

Версии

При указании зависимостей в файле composer.json необходимо указать версию пакета. Давайте рассмотрим варианты определения этих версий.

Точная версия

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

Диапазон

Вы можете определить несколько диапазонов. Диапазоны, разделенные пробелом или запятой, будут рассматриваться как логические «И». Две вертикальные черты (||) будут рассматриваться как логическое «ИЛИ». «И» имеет более высокий приоритет чем «ИЛИ».

Диапазон через дефис

Определяет диапазон с минимальной и максимальной границей версий. Если в правой части указать неполную версию, то она будет дополнена подстановочным знаком «*» (wildcard).

Подстановка (*)

Для определения любых значений можно использовать шаблон со знаком *.

Тильда (

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

Каретка (^)

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

Ветка git
Коммит

Заключение

Надеюсь, эти базовые знания помогут быстрее вникнуть в принцип работы Composer.

Источник

Сказочный портал