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

Laravel Package Toolkit Laravel Package

nyoncode/laravel-package-toolkit

Toolkit for building Laravel packages with less boilerplate: configure routes, migrations, translations, views/components, middleware, assets and commands. Includes install/about commands, publishing options, lifecycle hooks, and package-specific exception handling.

View on GitHub
Deep Wiki
Context7
2.2.0

Minor release — additive only, no breaking changes.

Added

  • Event registration — register event listeners and subscribers directly from configure(), applied at boot via the Event facade:

    • hasEvents([Event::class => [ListenerA::class, ListenerB::class]]) — a map of event to listener(s); each value may be a class-string, a closure, or an array.
    • hasEvent(Event::class, Listener::class) — a single event.
    • hasSubscriber(Subscriber::class) / hasSubscribers([...]) — event subscriber classes.
  • Optimize command registrationhasOptimizeCommands(optimize: 'pkg:cache', clear: 'pkg:clear') registers artisan commands that run with php artisan optimize and php artisan optimize:clear, forwarding to Laravel's ServiceProvider::optimizes(). The cache key defaults to the package short name.

  • Configurable publish tag separatorhasPublishTagSeparator() controls the format of publish tags:

    • Default stays {short-name}::{group} (e.g. my-package::config).
    • Pass '-' for the classic flat form (my-package-config).
    • Pass an array (e.g. ['::', '-']) to register every group under multiple tag forms at once, so consumers can publish with either; the first separator is primary and is used by the install command.

    The separator applies consistently to both vendor:publish tags and the package install command.

Changed

  • laravel/pint is now a runtime dependency.
  • composer lint runs PHPStan with --memory-limit=512M.

Full test suite: 252 passing, PHPStan level 5 clean.

2.1.1

Fixed

  • hasAssets() stored a wrong path — the directory was validated as ../<dir> but stored without the ../ prefix, so vendor:publish --tag=<name>::assets silently published nothing.
  • hasTranslations() rejected valid languages — the language-directory check used Collection::search(), whose 0 index for the first supported language was treated as a failure. Region locales (e.g. pt_BR, en-US) are now accepted as well.
  • hasViews() broke with a custom path — a relative path was passed unresolved to loadViewsFrom() and an absolute path (as documented) failed validation. Both are now resolved correctly.
  • routes, view-components and view-component-namespaces publish tags did nothing — the corresponding publish registrations were missing or never called. Route files are published to routes/vendor/<package-short-name>/.
  • publishMigrations() ignored an explicit file selection — publishing the whole directory of the first migration file instead of the configured files.
  • View components with list-style arrays received numeric aliases — a component at index 1+ of a non-associative array was registered under the alias 1; hasComponent() also registered the component twice.
  • packageCommands() was never called — commands returned from the documented override are now registered.
  • Install command no longer calls exit(0) — cancelling the production confirmation returns a proper exit code instead of terminating the process.
  • getVersion() no longer throws for packages without a composer name or not installed via Composer.
  • Test suite: PackageConfigWithFileNames was missing the Test suffix and never ran.

Changed

  • bootVewComposers() was renamed to bootViewComposers(); the misspelled method is kept as a deprecated alias.
  • PHPStan configuration added (phpstan.neon, level 5) so composer lint works.
  • Install command respects the provider's $tagSeparator — the tag separator is passed to the install command instead of being hardcoded to ::.
  • Packable is now part of the contract hierarchyProvidesPackageServices extends Packable, so providers following the documented implements Packable pattern are covered by the toolkit itself.

Deprecated

  • The HasAbout contract — unused by the toolkit; Packable already declares aboutData(). Will be removed in 3.0.
2.1.0

Removed

  • Dropped Laravel 10.x and 11.x support — both branches have passed their security-support end-of-life. The June 2026 advisories (including a High-severity CRLF injection, CVE-2026-48019) were patched only in Laravel 12.60+/13.9+ and never backported to 10.x or 11.x, so no secure release exists on those branches.

Changed

  • Minimum Laravel version raised to 12.61.1 / 13.12.0 — the illuminate/support constraint is now ^12.61.1|^13.12.0, pinning to the first releases patched against the June 2026 advisories. If you still depend on Laravel 10 or 11, stay on the ~2.0.0 release.

Fixed

  • About command data not merging — Custom about data returned from aboutData() on a service provider was never included in the php artisan about output; only the package Version was displayed. The provider's aboutData() is now passed through to the packager and merged with the version data as documented.
2.0.1

Fixed a bug when using the install command Added new tests

2.0.0

// Timeless files get auto-timestamped on publish: // create_posts_table.php → 2026_03_20_143022_create_posts_table.php

Method Description
hasDatePrefix(string $filename): bool Check if a filename has a standard Laravel migration date prefix
shouldPrependTimestamp(): bool Whether the current migration set contains timeless files
getMigrationPublishMapping(): array Generate source → destination mapping with auto-timestamps
1.2.4
1.2.1

What's Changed

Added support conditional loading Added support for Windows file system paths Added install command Added lifecycle hooks

Update docs

Small improvements

Full Changelog: https://github.com/NyonCode/laravel-package-toolkit/compare/1.1.1...1.2.1

1.1.1
  • Added support for middleware registration
  • Added the ability to bulk register publishable providers
  • Minor improvements
  • Improved code documentation
1.0.2
  • Fix small bugs

  • Update concern Packable.php

  • Update README.md

1.0.0

Initial release

v0.1.0-alfa

📦 Alfa Laravel Package Builder is here 🎉🎉

Full Changelog: https://github.com/NyonCode/laravel-package-builder/commits/v0.1.0-alfa

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