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
Requires
- php: >=8.3
- sweetchuck/utils: 2.x-dev
Requires (Dev)
- ext-dom: *
- consolidation/robo: ^5.0
- maddhatter/markdown-table: ^1.2
- mikey179/vfsstream: ^1.6
- nuvoleweb/robo-config: 3.x-dev
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11.5
- squizlabs/php_codesniffer: ^3.6
- sweetchuck/git-hooks: 2.x-dev
- sweetchuck/robo-git: 4.x-dev
- sweetchuck/robo-phpcs: 4.x-dev
- sweetchuck/robo-phpstan: 3.x-dev
- symfony/console: ^7.0
- symfony/error-handler: ^7.0
- symfony/filesystem: ^7.0
- symfony/finder: ^7.0
- symfony/yaml: ^7.0
Suggests
- maddhatter/markdown-table: ^1.2 Required by \Pamald\Pamald\Reporter\MarkdownTableReporter
- symfony/console: ^6.0 Required by \Pamald\Pamald\Reporter\ConsoleTableReporter
This package is auto-updated.
Last update: 2025-12-12 22:01:03 UTC
README
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);