stolt/lean-package-validator
CLI tool to validate a PHP project/micro-package for “leanness” by ensuring common repo artifacts aren’t shipped in release archives. Also creates and updates .gitattributes export-ignore entries to enforce lean release assets.
Installation:
composer global require stolt/lean-package-validator
Add to PATH or create an alias (e.g., alias lpv='~/.config/composer/vendor/bin/lean-package-validator').
First Use Case:
Validate your Laravel project’s .gitattributes for lean releases:
lpv validate
Run in your project root (or specify a directory). If missing, it suggests creating one.
Pre-Release Validation:
Integrate into Laravel’s composer.json scripts:
{
"scripts": {
"pre-release": [
"lean-package-validator validate",
"@php artisan package:discover"
]
}
}
Run with composer pre-release.
CI/CD Pipeline:
Use in GitHub Actions (e.g., stolt/lean-package-validator-action) or GitLab CI:
# .github/workflows/validate.yml
- name: Validate Lean Package
run: composer run lean-package-validator validate
Agentic Workflows:
For AI/automation pipelines, use --agentic-run for structured JSON output:
lpv validate --agentic-run | jq '.valid'
--glob-pattern or a .lpv file:
lpv validate --glob-pattern '{*.env,node_modules/,tests/}'
lpv validate --preset=PHP
lpv validate --validate-git-archive
Deprecated Flags:
Avoid --create/--overwrite (deprecated in v5.0). Use create/update commands instead:
lpv create # Replaces --create
lpv update # Replaces --overwrite
Strict Order Enforcement:
--enforce-strict-order fails if export-ignore entries are not in the exact expected order. Use sparingly.
False Positives:
--validate-git-archive may flag LICENSE/README if not explicitly kept:
lpv validate --keep-license --keep-readme
.gitattributes:
lpv validate --diff
lpv update --dry-run
Custom .lpv Files:
Define project-specific patterns (e.g., for Laravel’s storage/):
lpv init --preset=PHP
# Edit `.lpv` to add:
# storage/* export-ignore
Preset Extensions:
Extend presets by copying PhpPreset.php and overriding patterns.
GitHub Action: Use the action for automated validation in PRs:
- uses: raphaelstolt/lean-package-validator-action@v1
vendor:publish:
// app/Console/Commands/ValidateLeanPackage.php
public function handle() {
$this->call('lean-package-validator', ['command' => 'validate']);
}
Register in app/Console/Kernel.php:
protected $commands = [
\App\Console\Commands\ValidateLeanPackage::class,
];
How can I help you explore Laravel packages today?