pamald/pamald

Generates a report about the diff between two package manager lock file content.

Installs: 0

Dependents: 7

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 3

pkg:composer/pamald/pamald

1.x-dev 2025-10-12 21:26 UTC

This package is auto-updated.

Last update: 2025-12-12 22:01:03 UTC


README

CircleCI codecov

Package Manager Lock Diff = pamald
Generates a report about the diff between two package manager lock file content.

Features

  • Compare dependencies between two lock files
  • Detect version changes, additions, and removals
  • Identify direct vs. transitive dependency changes
  • Generate reports in multiple formats
    • Symfony Console Table
    • Markdown Table
    • JIRA Table
    • JSON
    • custom reporters can be added easily
  • Every reporter has its own options to customize the output
    • Show/hide columns
    • Group by (Your responsibility to group the entries)
    • Filter by (Your responsibility to filter the entries)
    • Sort by (Your responsibility to sort the entries)

Report Examples

Pamald can generate reports in various formats to help you understand what changed between two lock files.

Report Examples - Markdown Table

| Name | L Version | R Version | L Type   | R Type   | L Link   | R Link   | L Env      | R Env      | L Depth | R Depth |
|------|-----------|-----------|----------|----------|----------|----------|------------|------------|---------|---------|
| php  | 8.3.0     | 8.4.0     | platform | platform | required | required | production | production | direct  | direct  |
| a/b  | 2.2.3     | 2.2.4     | package  | package  | required | required | production | production | child   | direct  |

Report Examples - JSON

{
    "php": {
        "name": "php",
        "isTypeChanged": false,
        "isLinkChanged": false,
        "isEnvironmentChanged": false,
        "relationshipAction": "none",
        "isDirectDependencyChanged": false,
        "versionAction": "upgrade",
        "isVersionChanged": true,
        "versionPartChanged": "minor",
        "isVersionMajorChanged": false,
        "isVersionMinorChanged": true,
        "isVersionPatchChanged": true,
        "isVersionPreReleaseChanged": true,
        "isVersionMetadataChanged": true,
        "left": {
            "name": "php",
            "type": "platform",
            "link": "required",
            "environment": "production",
            "versionString": "8.3.0",
            "isDirectDependency": true
        },
        "right": {
            "name": "php",
            "type": "platform",
            "link": "required",
            "environment": "production",
            "versionString": "8.4.0",
            "isDirectDependency": true
        }
    }
}

Usage

This example code generates the same report in three different formats.

<?php

declare(strict_types = 1);

use Pamald\Pamald\LockDiffer;
use Pamald\Pamald\Reporter\MarkdownTableReporter;
use Pamald\Pamald\Reporter\JsonReporter;
use Pamald\Pamald\Reporter\JiraTableReporter;

// It is your responsibility to load the lock files.
// See packages:
// - pamald/pamald-composer
// - pamald/pamald-npm
// - pamald/pamald-yarn
$leftDependencies = [];
$rightDependencies = [];

$lockDiffer = new LockDiffer();
$diffEntries = $lockDiffer->diff($leftDependencies, $rightDependencies);

$markdownReporter = new MarkdownTableReporter();
$markdownReporter->setStream(\STDOUT);
$markdownReporter->generate($diffEntries);

$jsonReporter = new JsonReporter();
$jsonReporter->setStream(\STDOUT);
$jsonReporter->generate($diffEntries);

$jiraReporter = new JiraTableReporter();
$jiraReporter->setStream(\STDOUT);
$jiraReporter->generate($diffEntries);

Links