Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Php Conventional Changelog Laravel Package

marcocesarato/php-conventional-changelog

Automatically generate changelogs and release notes from your Git history using Conventional Commits and SemVer. CLI tool with configurable templates and options to extract releases and output Markdown changelogs, suitable for Composer scripts and CI workflows.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Laravel Compatibility: The package is PHP-based and integrates seamlessly with Laravel’s CLI-driven workflows (e.g., Artisan commands). It leverages Composer scripts, which Laravel already supports natively via composer.json.
  • Git Dependency: Requires Git for commit history parsing, which is a hard dependency for Laravel projects using version control (standard practice).
  • Semantic Versioning (SemVer) Alignment: Aligns with Laravel’s existing versioning practices (e.g., composer.json version fields) and CI/CD pipelines (e.g., GitHub/GitLab releases).
  • Customization: Configurable via .changelog file or CLI flags, allowing alignment with Laravel’s project-specific conventions (e.g., commit message templates, release workflows).

Integration Feasibility

  • Low-Coupling: Operates as a standalone CLI tool, avoiding tight integration with Laravel’s core. Can be invoked via:
    • Composer scripts (e.g., composer changelog).
    • Artisan commands (wrap the CLI tool in a custom command).
    • CI/CD pipelines (e.g., GitHub Actions, Laravel Forge).
  • Dependency Conflicts: Minimal risk—only requires PHP ≥7.1.3 and Git, which are already prerequisites for Laravel.
  • Existing Workflows: Complements Laravel’s release processes (e.g., php artisan release or custom scripts) without duplication.

Technical Risk

  • Commit Message Discipline: Relies on Conventional Commits adherence. Risk of misconfigured or inconsistent commit messages breaking changelog generation.
    • Mitigation: Enforce commit hooks (e.g., commit-msg with husky or Laravel’s git-hooks package) to validate messages.
  • Git History Complexity: Projects with:
    • Squashed merges or interactive rebase may require --history flag or custom --from-tag/--to-tag ranges.
    • Submodules or monorepos may need path adjustments (e.g., --root config).
    • Mitigation: Test with a representative Git history before full adoption.
  • Configuration Overhead: Custom .changelog files may diverge across teams.
    • Mitigation: Use Laravel’s environment config (e.g., .env) or package presets to standardize settings.
  • GPG-Signed Tags: Requires GPG setup for --sign-tag, which may not be universally configured.
    • Mitigation: Default to --annotate-tag and document GPG setup as optional.

Key Questions

  1. Commit Message Compliance:
    • Are commit messages already following Conventional Commits?
    • If not, what’s the effort to enforce this (e.g., training, hooks, or a migration tool like commitizen)?
  2. Release Workflow Integration:
    • How does this fit with existing release processes (e.g., Laravel Forge, Envoyer, or custom scripts)?
    • Should it replace, augment, or run alongside tools like php artisan release?
  3. Configuration Management:
    • Should .changelog settings be version-controlled or team-specific?
    • Can Laravel’s config caching or package presets (e.g., config/changelog.php) simplify this?
  4. CI/CD Pipeline Impact:
    • Where in the pipeline should this run (e.g., post-merge, pre-release)?
    • How will it interact with tools like Laravel Mix, Vite, or Pest that may also generate changelogs?
  5. Fallback Mechanisms:
    • What’s the plan if Git history is corrupted or commit messages are malformed?
    • Should manual overrides (e.g., --ver flag) be documented for edge cases?

Integration Approach

Stack Fit

  • PHP/Laravel: Native compatibility with Composer and Git.
  • Git: Required for commit parsing; no additional tooling needed.
  • CLI Tools: Designed for terminal use, but can be wrapped in Laravel-specific abstractions (e.g., Artisan commands).
  • CI/CD: Integrates with GitHub Actions, GitLab CI, or Laravel Forge via script execution.
  • Monorepos: Limited support; may require path adjustments or submodule handling.

Migration Path

  1. Pilot Phase:
    • Install in a non-production Laravel project (e.g., a feature branch or sandbox).
    • Test with:
      • A subset of commits (e.g., --from-date).
      • Custom .changelog config to match Laravel’s conventions.
    • Validate output against manually written CHANGELOG.md.
  2. Incremental Rollout:
    • Phase 1: Replace manual changelog generation for minor/patch releases.
    • Phase 2: Automate in CI/CD (e.g., trigger on main branch pushes with feat: or fix: commits).
    • Phase 3: Enforce commit message rules via hooks.
  3. Fallback Plan:
    • Document manual override steps (e.g., --ver flag for critical releases).
    • Maintain a script to merge automated and manual changelog entries.

Compatibility

Laravel Feature Compatibility Notes
Composer Scripts ✅ Full support Use composer.json scripts (e.g., "release": "conventional-changelog --commit").
Artisan Commands ✅ Partial (wrapper needed) Create a custom Artisan command to call the CLI tool.
Git Hooks ✅ Indirect (via husky or Laravel) Use commit-msg hooks to validate Conventional Commits.
CI/CD (GitHub Actions) ✅ Full support Add as a step in workflows (e.g., php vendor/bin/conventional-changelog --commit).
Laravel Forge/Envoyer ✅ Full support Deploy scripts can trigger changelog generation.
Monorepos (Laravel Breeze) ⚠️ Limited May need --root or path adjustments.
Custom Commit Templates ✅ Full support Align templates with Conventional Commits.

Sequencing

  1. Pre-Release:
    • Commit Phase: Enforce Conventional Commits via hooks.
    • Build Phase: Generate changelog in CI (e.g., GitHub Actions) on feat:/fix: pushes.
    • Tag Phase: Use --commit --annotate-tag to create release tags.
  2. Post-Release:
    • Update CHANGELOG.md in the repo.
    • Publish to package managers (e.g., Packagist) or documentation sites.
  3. Rollback:
    • If a release fails, use --from-tag to regenerate changelog for the correct range.

Operational Impact

Maintenance

  • Proactive:
    • Commit Message Audits: Periodically review commits for Conventional Commits compliance.
    • Configuration Updates: Update .changelog if Laravel’s release process evolves (e.g., new commit types).
    • Dependency Updates: Monitor for updates to marcocesarato/php-conventional-changelog (last release: 2026-03-27).
  • Reactive:
    • Broken Changelogs: Debug with --verbose flag or Git history inspection.
    • Configuration Drift: Use Laravel’s config validation to catch invalid .changelog settings early.
  • Tooling:
    • IDE Support: Add .changelog to IDE templates (e.g., VSCode) for consistency.
    • Documentation: Maintain a CONTRIBUTING.md section on commit message rules.

Support

  • Developer Onboarding:
    • Train teams on:
      • Conventional Commits syntax.
      • .changelog configuration.
      • Override flags (e.g., --ver for manual versions).
    • Provide a cheat sheet for common commands (e.g., composer release:minor).
  • Troubleshooting:
    • Common issues:
      • Empty changelog: Check --no-change-without-commits or Git history.
      • Version bumps: Verify composer.json permissions and Package Bump config.
      • Tag failures: Ensure Git is configured for annotated/signed tags.
    • Debugging: Use --verbose or GIT_TRACE=1 for Git-level debugging.
  • Escalation Path:
    • For critical failures, maintain a manual fallback (e.g., template-based changelog generation).

Scaling

  • Performance:
    • Large Git History: Use --from-tag or --from-date to limit scope.
    • Parallelization: Not applicable (single-threaded CLI tool).
    • CI/CD Load: Minimal;
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky