juzaweb/dev-tool
JuzaWeb Dev Tool is a Laravel development toolkit for the JuzaWeb CMS. It provides artisan commands and scaffolding helpers to quickly generate plugins, themes, controllers, models, and CRUD modules, speeding up addon development and simplifying common backend tasks for package authors.
juzaweb/dev-tool is a dev-only Artisan toolkit for Juzaweb projects. It is not a general-purpose Laravel package: if you are not on Juzaweb CMS (or building modules/packages that follow its conventions), most of what ships here is irrelevant to you. For a Juzaweb developer, though, it removes a meaningful amount of repeated scaffolding work.
Minimal setup:
composer require --dev juzaweb/dev-tool
php artisan vendor:publish --tag=dev-tool-config # only if you need to override stub paths / output namespaces
php artisan list | grep -i dev
That php artisan list step matters more than usual because the package registers a mix of generator commands (make:page-block, module/package scaffolders, publish-agents), maintenance commands (dump), asset helpers (DownloadStyleCommand) and a GitHub release command (GithubReleaseModuleCommand). You want to see exactly what got registered in your app, because command-name collisions with framework make:* and dump are a real risk in a CMS codebase that already stacks packages.
Where to look first:
stubs/ directory — generators are only as good as their stubs. Note that 2.0.5 specifically fixed .stub files being mangled by Pint, so if you published stubs from 2.0.4, re-publish.php artisan help make:page-block — read the signature before wrapping it or guessing flags.First use case: scaffold one page block in a real module, inspect the generated files, and diff them against what you would have written by hand. That diff tells you whether to customise the stub, wrap the command, or ignore the tool for that task. Doing this once is far more informative than reading the README.
Customise stubs, don't fork commands. Publish stubs into your app and edit them. Generators read stubs at runtime, so you keep the upstream command logic (and its test coverage) while controlling the output shape. Fork a command only when you genuinely need different arguments or a different file set — otherwise you inherit maintenance for every patch release.
Wrap generators in app-level task commands. In a team, a thin php artisan app:make-block {name} that calls the package command with your defaults (namespace, path, registration, stub) means developers don't memorise flags, and package upgrades stay invisible. This is the single highest-leverage pattern here: the package becomes an implementation detail of your tooling.
Treat DownloadStyleCommand as a build step, not an ad hoc command. PR #23 added file-content caching, so repeat runs are cheap — which is exactly why you should call it from composer run setup or a provisioning script rather than by hand. Cache behaviour is deterministic when it runs the same way every time.
Pair generators with a CI style gate. 2.0.5 added a Pint check to the package's own workflow and fixed .stub formatting by Pint. Mirror that in your pipeline: run pint --test on application code, and keep .stub files excluded from normal Pint formatting (placeholder syntax in stubs is not valid PHP and will be reformatted destructively).
Keep release automation in CI only. GithubReleaseModuleCommand belongs in a tag-push workflow with a repo-scoped token. Never wire it to a local habit — one stray invocation publishes from a laptop.
Generator-then-review, never generator-then-commit. Scaffolded output is a starting point. The value is in the review diff, not the scaffolding itself; a block generator that saves five minutes but ships unreviewed registration code is a net loss.
require-dev. If any service provider or command boot leaks into production, gate registration behind $this->app->environment('local', 'testing'). A dev tool registering dump in production is both a security smell and a footgun.dump and generic make:* names can collide with the framework or other packages. Run php artisan list after install and after every upgrade; if a command behaves differently than the package docs suggest, check whether something else won the name.DumpCommand, FileGenerator, PublishAgentsCommand, GithubReleaseModuleCommand, MakePageBlockCommand::handle() simplified, caching in DownloadStyleCommand, Pint in CI. Signatures and options unchanged — safe patch bump. Re-read those classes only if you subclassed or monkey-patched them.FileGenerator::generate, then the config. The 2.0.5 tests are a good reference for expected input/output shapes if you need to reason about the generator directly.^2.0 and let patches through. Low-risk release cadence, no migration burden, but always sanity-check one generated file after the bump given the .stub/Pint history.How can I help you explore Laravel packages today?