кодесурса

Схема composer.json

script1adsense2code
script1adsense3code

Вступление

В этом руководстве мы рассмотрим схему 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code