PHPackages                             n5s/rangelog - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. n5s/rangelog

ActiveLibrary[HTTP &amp; Networking](/categories/http)

n5s/rangelog
============

Rangelog — resolve and parse changelog notes for any package across GitHub, WordPress.org, GitLab, and in-repo sources, over a `(from, to)` version range.

1.1.1(1mo ago)339MITPHPPHP ^8.3 || ^8.4 || ^8.5CI passing

Since May 22Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/nlemoine/rangelog)[ Packagist](https://packagist.org/packages/n5s/rangelog)[ RSS](/packages/n5s-rangelog/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (4)Dependencies (46)Versions (6)Used By (0)

n5s/rangelog
============

[](#n5srangelog)

A PHP library that, given a `(name, sourceUrl)` pair and a version range, returns structured changelog notes. Sources covered: GitHub Releases, in-repo `CHANGELOG.md` files, WordPress.org plugin readmes, GitLab Releases, the GitLab repository file API, and any accessible markdown URL.

[![Packagist Version](https://camo.githubusercontent.com/1c09aaf14b269afe541458b4bf597a33d40d71d93d43e2ad0be9d053e92a8a3c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6e35732f72616e67656c6f672e737667)](https://packagist.org/packages/n5s/rangelog)[![QA](https://github.com/nlemoine/rangelog/actions/workflows/qa.yml/badge.svg)](https://github.com/nlemoine/rangelog/actions/workflows/qa.yml)[![codecov](https://camo.githubusercontent.com/1dc58e23115960a4ffbb552ca92a01aefb80188aa574e588ae94ebdfe28f38cb/68747470733a2f2f636f6465636f762e696f2f67682f6e6c656d6f696e652f72616e67656c6f672f67726170682f62616467652e737667)](https://codecov.io/gh/nlemoine/rangelog)[![License: MIT](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](LICENSE)

Why
---

[](#why)

Built to feed DIY auto-update pipelines on top of `composer update`. A typical pipeline runs `composer update`, opens a PR via [`composer-diff`](https://github.com/IonBazan/composer-diff) for the package-version delta, runs checks, and merges. What's usually missing in that PR is the actual changelog notes, the kind Dependabot and Renovate produce out of the box for npm. This library produces them for any package.

The priority is GitHub-hosted packages and WordPress.org plugins, with structured output the caller can trust. Other sources (GitLab, generic markdown URLs) are first-class but tested less broadly.

Requirements
------------

[](#requirements)

- PHP 8.3, 8.4, or 8.5. Strict types, typed class constants and readonly classes are used throughout.
- A PSR-18 HTTP client. For example [`php-http/curl-client`](https://packagist.org/packages/php-http/curl-client), [`symfony/http-client`](https://packagist.org/packages/symfony/http-client), or [`guzzlehttp/guzzle`](https://packagist.org/packages/guzzlehttp/guzzle) with an [HTTPlug adapter](https://docs.php-http.org/en/latest/clients/guzzle7-adapter.html).
- A PSR-17 request/stream factory. For example [`nyholm/psr7`](https://packagist.org/packages/nyholm/psr7) or [`guzzlehttp/psr7`](https://packagist.org/packages/guzzlehttp/psr7).
- Optional: any PSR-6 (`Psr\Cache\CacheItemPoolInterface`) or PSR-16 (`Psr\SimpleCache\CacheInterface`) cache.
- Optional: any PSR-3 (`Psr\Log\LoggerInterface`). Defaults to `Psr\Log\NullLogger`.

The library bundles no HTTP client, cache, or logger. All network access goes through the PSR-18 client you inject; caching and logging are the caller's concern.

Install
-------

[](#install)

```
composer require n5s/rangelog
```

You also need a PSR-18 client and a PSR-17 factory. Two popular minimal choices:

```
# Curl + nyholm/psr7
composer require php-http/curl-client nyholm/psr7
```

```
# Symfony HTTP Client + nyholm/psr7
composer require symfony/http-client nyholm/psr7
```

Any PSR-18 / PSR-17 implementation works. The two snippets above are popular minimal choices; pick whatever you already have in your project.

Quickstart
----------

[](#quickstart)

```
