Недавно я хотел получить список прямых зависимостей в нашем исходном коде PHP, устаревшим. конечный результат
Начальная мысль управляла зависимостями, пока он открывает PR
Для каждой незначительные обновления я думал, что будет круто, чтобы увидеть, как я могу сделать то же самое.
Первоначально я нашел команду композитора на то же самое, мы можем запустить:
composer outdated --direct -f json
Чтобы получить список устаревших пакетов в приятный формат 😍
Следующая мысль должна была поставить его за обслуживание или иметь его на сервере, который привел меня к следующему препятствию.
Я не хочу устанавливать пакеты или иметь команды после установки на сервере, которые я не буду использовать для чего-либо еще. 🏻♂️.
🤔 Как мы получаем список устаревших пакетов, не устанавливая пакеты, и нам даже нужен композитор для этого?
После некоторой мысли я решил использовать Composer.json.
и Композитор. Блок
Чтобы получить некоторую информацию и найти API для получения информации о пакете из Packagist. 🤞🏻.
API – это больше URL-адрес с помощью Djson Extension🤫. Например, чтобы получить детали пакета для Монолог/монолог
Вы можете просто добавить .json
в конце URL. URL в Packagist довольно хорошо отформатирован, так что для упаковки, как Монолог/монолог
URL становится: https://packagist.org/packages/monolog/monolog.json
Теперь, оснащены ограничениями, текущей версией и информацией пакета, пришло время написать сценарий. 🤓
Шаг 1: Разбор файлов
Я использовал JSON
Библиотека доступна в Python, чтобы получить данные из этих файлов.
Шаг 2: Чтение метаданных от Packagist
Я использовал поддомен REPO, но работает прямым URL.
Шаг 3: Работа с семантическими версиями 😯
Это была самая сложная часть, потому что нам нужно обрабатывать разные случаи, и были некоторые пакеты, которые ссылаются на Git Commita😒. Но после того, как некоторые пытаются поймать и играть с семантическая версия
Библиотека, которую я смог справиться с разбором. Однажды сделано с разбором, сравнение версий и подготовка окончательного результата, был бризом.
Примечание: Я должен был перейти на класс NPMSPEC
вместо SimPlespec
чтобы лучше справиться с версиями. Эта библиотека использует семантическую версию, определенную NPM-Semver
Хотя скрипт – это просто отправная точка, это было довольно весело, чтобы написать И, может быть, я буду расширить его, чтобы сделать его объектно ориентированным, добавить тестовые случаи вместе с другими колоколами и свистками 😉
Надеюсь, вам понравилось читать его, и он предоставил вам приятные инструменты 💪🏻, чтобы использовать при работе с семантической версией в вашем коде. Дайте мне знать в комментариях, если бы я позволил объяснить процесс по-разному.
Убедитесь, что вы следуете, хлопают, бросьте несколько единороги на меня и поделитесь этим постом со своими друзьями, семьей, соседями и всеми, что вы встретите на дороге. 😄
Оригинал: “https://dev.to/ri5hirajp/get-composer-outdated-packages-w-o-install-4f7o”