Рубрики
Uncategorized

Научитесь разрабатывать свой собственный пакет composer и обновлять его до Packagist в режиме реального времени с помощью GitHub

Автор оригинала: David Wong.

Что такое композитор?

Композитор не является менеджером пакетов. Да, он включает в себя “пакеты” и “библиотеки”, но он управляется на основе каждого проекта и устанавливается в каталог вашего проекта (например, поставщика). По умолчанию он ничего не устанавливает глобально. Так что это просто управление зависимостями.

Композитор был сильно вдохновлен NPM node и связывателем ruby. В то время не существовало аналогичного инструмента под PHP.

Что может сделать композитор?

Композитор решит эту проблему за вас таким образом:

  • У вас есть проект, который зависит от нескольких библиотек.
  • Некоторые из этих библиотек зависят от других библиотек.
  • Вы заявляете, от чего вы зависите.
  • Composer выяснит, какие версии пакетов необходимо установить, и установит их (загрузите их в свой проект).

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

Разработайте свои собственные компоненты композитора

Пункты: Понимание того, как composer реализует автоматическую загрузку сторонних компонентов; Понимание psr-0 и psr-4 Норм; Понимание на основе psr-0 , psr-4 , classmap Как автоматически загружаются файлы? Понимающий композитор и упаковщик

Об установке и использовании composer Пожалуйста, обратитесь к composer для изучения китайского языка

Создание имен каталогов

mkdir try-make-package
cd try-make-package

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

Инициализация пакетов расширений

☁  composer init

  Welcome to the Composer config generator

This command will guide you through creating your composer.json config.

Package name (/) [lingan/try-make-package]:
Description []: try make a package
Author [saboran <[email protected]>, n to skip]:
Minimum Stability []: dev
Package Type (e.g. library, project, metapackage, composer-plugin) []: library
License []: MIT

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? n
Would you like to define your dev dependencies (require-dev) interactively [yes]? n

{
    "name": "lingan/try-make-package",
    "description": "try make a package",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "saboran",
            "email": "[email protected]"
        }
    ],
    "minimum-stability": "dev",
    "require": {}
}

Do you confirm generation [yes]? yes

После некоторой борьбы создается текущий каталог. composer.json Файл, давайте внесем некоторые изменения в этот файл.

измените composer.json, добавив спецификации автоматической загрузки (отношения сопоставления пространства имен и каталогов) и требования к окружающей среде

{
  "name": "lingan/try-make-package",
  "description": "try make a package",
  "type": "library",
  "license": "MIT",
  "authors": [
    {
      "name": "saboran",
      "email": "[email protected]"
    }
  ],
  "minimum-stability": "dev",
  "require": {
    "php": ">=7.0"
  },
  "autoload": {
    "psr-4": {
      "Flower\Rose\": "src/Flower/Rose",
      "Flower\Lily\": "src/Flower/Lily"
    }
  }
}

Создание файлов классов

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

Соответствующее содержимое файла

Испытательная установка

После сортировки приведенного выше кода вам необходимо установить composer , чтобы проверить, правильно ли работают наши пакеты, это будет vendor/composer/autoload_psr4.php Создание отношений сопоставления между пространствами имен и каталогами, заключенными в массив:

 array($baseDir . '/src/Flower/Rose'),
    'Flower\Lily\' => array($baseDir . '/src/Flower/Lily'),
);

увеличьте.gitignore, игнорируйте некоторые файлы для GIT и добавьте readme. MD для добавления описаний проектов

.idea
vendor/
composer.lock

Отправьте код на GitHub

Теперь создайте новый склад на своей домашней странице Github и отправьте проект на соответствующий склад следующим образом

git init
git add -A
git commit -am "init && dev package"
git remote add origin [email protected]:linganmin/try-make-package.git
git push -u origin master

Войдите в свой пакет (зарегистрируйтесь самостоятельно)

Вставьте адрес своего проекта, нажмите “Проверить”, затем нажмите “Отправить”, и ваш пакет composer будет успешно отправлен.

Тестирование с использованием расширений пакетов, разработанных нами самими [Обновление 2017.11.07]

  • Создайте каталог тестов
mkdir test-my-package
cd test-my-package
  • Установите свои собственные расширения
 composer require lingan/try-make-package dev-master
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing lingan/try-make-package (dev-master d7b9f94): Cloning d7b9f941b0 from cache
Writing lock file
Generating autoload files
  • Установленный каталог показан ниже.
  • См. autoload_psr4.php
 array($vendorDir . '/lingan/try-make-package/src/Flower/Rose'),
    'Flower\Lily\' => array($vendorDir . '/lingan/try-make-package/src/Flower/Lily'),
);
  • Новый файл Ввода Домашней Страницы index.php Начните тестировать свои пакеты
desc();
echo "\n";
echo $lily->desc();
  • осуществлять
php index.php
this is rose flower
this is lily flower%    

* Пока это показывает, что разработанные нами пакеты расширений можно использовать в обычном режиме.

Настройте пакет для автоматического обновления пакета расширения, то есть, когда мы обновим пакет расширения и отправим его на GitHub, пакет автоматически обновится.

Если автоматическое обновление не установлено, на странице сведений о пакете в Packagist появится такое приглашение

Этот пакет не обновляется автоматически. Пожалуйста, настройте сервисный крючок GitHub для Packagist, чтобы он обновлялся при нажатии! (Этот пакет не обновляется автоматически. Настройте сервисный крючок GitHub для обновления Packagist при нажатии! )

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

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

  1. Перейдите на страницу Личного центра и получите свой собственный маркер API
  2. Для получения текущего адреса пакета на GitHub нажмите Настроить Нажмите Интеграция и службы Нажмите Добавить упаковщика Обслуживайте и настраивайте свой маркер API, а также имя пользователя упаковщика и соответствующее доменное имя учетной записи
  3. Выбор активный Нажмите добавить услугу
  4. Настройте автоматическое обновление на завершение, а затем измените код расширения пакета для отправки на GitHub, и очень небольшая разница во времени будет синхронизирована с Packagist.

Заключительные замечания

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

Счастливое Кодирование