Схема composer.json
Вступление
В этом руководстве мы рассмотрим схему Json файла composer.json. Здесь мы объясним поля, доступные в файле composer.json.
Схема #Json. Здесь описывается формат файла composer.json. Он используется для проверки нашего файла composer.json, когда используется команда «validate».
#Root Package: файл composer.json определяет корневой пакет в корне нашего проекта. Корневой пакет «только для root». Это подразумевает, что поле конфигурации, определенное в этом пакете, игнорируется в наших зависимостях
# Свойства: состоят из следующего:
#name: название нашей посылки . Имя состоит из имени поставщика и имени проекта, которые разделены символом «/». Рекомендуется, чтобы все были в нижнем колпачке. Пример: «hellocomposer / hellocomposer». Это важно для опубликованных библиотек.
#description: Это краткое описание пакета, обычно оно не превышает длину строки. Это важно для опубликованных библиотек.
#version: В большинстве случаев это не требуется, и поэтому его следует пропускать, особенно когда наши пакеты должны размещаться в системе контроля версий, такой как Git.
Если они должны быть включены, он должен отображаться в этом формате «ABC» или «vA.BC» с необязательным суффиксом «-dev», «- patch», «- p», «- alpha», «- a» »- бета»,»- б».
#type : по умолчанию это «библиотека», но это можно изменить на «проект», «метапакет» или «композитный плагин». Рекомендуется пропустить это поле, если вашему проекту не потребуется настраиваемый тип логики во время установки.
#keywords : Это просто набор слов, с которыми связан наш пакет. Например, теги, события, сочинять и т. Д.
#hompage : URL сайта нашего проекта. Это поле также является необязательным.
#readme : относительная часть для доступа к файлу read me. Это поле является необязательным.
#time : Это дата выпуска пакета, которая также может быть опущена.
#license : лицензирование нашего пакета. Это поле является необязательным, но если оно доступно, оно может быть строкой или массивом строк, как показано в следующем фрагменте кода:
{
"license": "SCI"
}
Приведенный выше фрагмент кода показывает лицензию в виде строки. Когда в пакете требуется две или более лицензий, обычно называемых дизъюнктивной лицензией, массив лицензий может быть задан, как показано
{
"license": [
"LGPL-2.1-only",
"GPL-3.0-or-later"
]
}
В качестве альтернативы, они также могут быть разделены знаком «или», как показано
{
"license": "(LGPL-2.1-only or GPL-3.0-or-later)"
}
#authors: эта деталь автора представляет собой массив объектов, который может содержать одну из следующих деталей: имя, адрес электронной почты, домашняя страница и роль. Это поле мысли необязательно, настоятельно рекомендуется. Пример показан во фрагменте кода ниже:
{
"authors": [
{
"name": "Ogbonna Vitalis",
"email": "[email protected]",
"homepage": "http://kodesource.top",
"role": "Developer"
},
{
"name": "Jordi Bogdanov",
"email": "[email protected] ",
"homepage": "https:// w3resource.com ",
"role": "Developer"
}
]
}
#support: сюда входят различные ссылки для получения поддержки о библиотеке. Он включает в себя: электронную почту, вопросы, форум, вики, irc, источник, документы, RSS и чат. Это поле также является необязательным.
{
"support": {
"email": "[email protected]",
"irc": "irc://irc.freenode.org/composer"
}
}
# Ссылки пакета : Это берет объект, который отображает имя пакета на версию пакета через ограничения версии. Это включает:
#require: список всех пакетов, требуемых пакетом. Пакет не будет успешно установлен, пока не будут загружены все указанные здесь пакеты.
{
"require": {
"monolog/monolog": "1.0.*"
}
}
# require-dev: в этом списке перечислены только пакеты, необходимые для разработки пакета или запуска модульных тестов. Пакеты здесь не установлены по умолчанию.
{
"require": {
"monolog/monolog": "1.0.*@beta",
"acme/foo": "@dev"
}
}
#conflict: список пакетов, конфликтующих с версией нашего пакета. Эти пакеты не могут быть установлены в нашем пакете.
#replace: используется для отображения пакетов, которые будут заменены. Это позволяет публиковать разветвленный пакет под другим именем, тогда как все пакеты в зависимости от исходного пакета хорошо работают с разветвленным пакетом, поскольку этот разветвленный пакет заменяет исходный пакет.
#provide: Здесь указан список всех пакетов, предоставляемых этим пакетом. Это полезно для общих интерфейсов. Предполагая, что пакет зависит от некоторого пакета виртуального регистратора, любой пакет, реализующий этот интерфейс регистратора, будет указан в «предоставить».
#suggest: пакеты, которые могут улучшить или работать с этим пакетом, перечислены здесь. Это отображается после нашего пакета, сообщая пользователям о некоторых дополнительных пакетах, которые они могут установить. Это также необязательное поле. Пример:
{
"suggest": {
"monolog/monolog": "Allows more advanced logging",
"ext-xml": "Needed for XML support"
}
}
#autoload: Это обеспечивает автозагрузчик PHP. Два типа автоматической загрузки - «PSR-4» и «PSR-0»
# PSR-4 »: под клавишей« psr-4 ». В PSR-4 пространства имен сопоставляются с путями относительно корня пакета. Когда автозагрузка класса, такого как «Vita // Foo // Baz», указывает на каталог scr /, это означает, что автозагрузчик будет искать файл с именем scr / Bar / Baz.php и включать его, если он присутствует. Это предпочтительнее стиля PSR-O, где префикс Vita // отсутствует в пути к файлу.
Префиксы пространств имен должны заканчиваться на «//», чтобы избежать конфликтов между похожими префиксами. Задние зазоры решают конфликты проблем, выделяя имена классов, такие как «Foo //» и «Foosaa //». пример
{
"autoload": {
"psr-4": {
"Monolog\\": "src/",
"Vendor\\Namespace\\": ""
}
}
}
# PSR-0: в PSR-0 ключи отображаются из пространств имен в путь относительно корня пакета. PSR-0 поддерживает соглашение без пространства имен в стиле PEAR.
Пример:{
"autoload": {
"psr-0": {
"Monolog\\": "src/",
"Vendor\\Namespace\\": "src/",
"Vendor_Namespace_": "src/"
}
}
}
#classmap : карта классов ссылается на все, что было установлено во время установки / обновления, в единый массив ключей и значений. Эту сгенерированную карту классов можно найти в «vendor / composer / autoload_classmap.php». Эта карта генерируется путем сканирования всех файлов «.php» и «.inc» в указанных каталогах.
{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}
#files: это поле позволяет явно запрашивать файлы по запросам. Они чрезвычайно важны для функций PHP, которые не могут быть автоматически загружены PHP.
{
"autoload": {
"files": ["src/MyLibrary/functions.php"]
}
}
# минимальная стабильность: определяет минимальное состояние стабильности пакетов, которые будут установлены. По умолчанию стабильно. Рекомендуется всегда указывать это, если вы передаете пакет dev.
# предпочитайте стабильный: если этот параметр включен, компоновщик предпочитает более стабильные пакеты, нежели нестабильные. Чтобы включить, используйте («предпочитаем-стабильный»: true)
#repositories: определяет пользовательские репозитории, которые будут использоваться. Поскольку по умолчанию компоновщик использует Packagist, определение этих репозиториев приведет к поиску компоновщиком пакетов в указанных репозиториях.
"repositories": [
{
"type": "composer",
"url": "http://packages.example.com"
},
{
"type": "composer",
"url": "https://packages.example.com",
"options": {
"ssl": {
"verify_peer": "true"
}
}
},
{
"type": "vcs",
"url": "https://github.com/Seldaek/monolog"
},
{
"type": "pear",
"url": "https://pear2.php.net"
},
{
"type": "package",
"package": {
"name": "smarty/smarty",
"version": "3.1.7",
"dist": {
"url": "https://www.smarty.net/files/Smarty-3.1.7.zip",
"type": "zip"
},
"source": {
"url": "https://smarty-php.googlecode.com/svn/",
"type": "svn",
"reference": "tags/Smarty_3_1_7/distribution/"
}
}
}
]
}
В приведенном выше списке репозиториев порядок очень важен, так как композитор выполняет поиск сверху вниз и включает файлы, найденные на ходу. По умолчанию Packagist включен последним, что другие перезаписывают.
Мы рассмотрели схему composer.json и поля, описанные в них, не стесняйтесь использовать эти поля в своих пакетах.
Предыдущая: Концепция композиторских пакетов и репозиториев
Далее: Интерфейс командной строки Composer и команды (часть 1)
Новый контент: Composer: менеджер зависимостей для PHP , R программирования