daikazu/laravel-go
A compact Laravel package from daikazu that adds Go-focused helpers and integrations to Laravel applications, making it easier to bring Go workflows into PHP projects. It offers straightforward setup and configuration for developers blending Go concepts with Laravel.
Before you install anything, reconcile two conflicting stories about this package. The public one-liner describes "a bridge between Laravel and Go binaries" with streamed output and exit codes; the release history, the "highly opinionated package for developing websites" tagline, and v4.1.2's only change ("Updated optional default package versions") describe a scaffolder that installs and version-pins a set of optional Composer packages. Those are completely different tools. Spend five minutes on the repo's composer.json, src/, and the command list before you spend an hour integrating. Everything below assumes the scaffolder interpretation, because that is what the shipped artifacts actually show.
Also note the headline constraint: the package is archived and its last release is 2023-01-23 (v4.1.2). That predates Laravel 10/11. Check the illuminate/* constraint in its composer.json against your app's Laravel version first — if it conflicts, the rest of this is moot.
Install and publish:
composer require --dev daikazu/laravel-go
php artisan vendor:publish --tag=laravel-go-config # verify the tag name in the README
Then look at three things, in this order:
config/laravel-go.php — this is where the package's behaviour lives, including the optional default package versions that v4.1.2 bumped. Read it before running anything; it tells you which integrations are on by default and which versions they resolve to.php artisan list | grep -i go — the console commands are the primary interface. Anything configurable is usually also exposed as a flag.First use case: run the setup command against a throwaway branch or a fresh skeleton app with --no-interaction, then read the git diff of composer.json and the published config. That single diff tells you more about what the package does than the docs do, and it costs you nothing.
Treat the published config as the source of truth. Once config/laravel-go.php is committed, pin every version that matters rather than relying on shipped defaults. v4.1.2 is a pure defaults bump — exactly the class of change that quietly alters what a fresh environment installs.
Separate scaffold time from day-to-day work. This is not a package you touch on every feature branch. The two recurring touchpoints are:
For the second case, re-run the package's command with the relevant flag rather than hand-editing composer.json. Hand edits drift from the package's version matrix and you lose the ability to diff intent.
Make upgrades a two-step review. Bump the package, then re-run the sync/update command on a scratch branch and read the diff of composer.json, composer.lock, and the published config. Because the package manages other packages' versions, a "patch" dependency bump can change your application's dependency graph. That is the risk to watch for here, not API breakage.
Keep a thin wrapper. A make setup or composer run bootstrap script that calls the package command with explicit flags beats remembering the flag set. It also gives you one place to update when defaults shift.
Guard reproducibility in CI. Run the tool with --no-interaction and, where supported, --no-update, so resolution is deferred to composer install against a committed lock file. Never let CI resolve floating defaults — v4.1.2 would silently produce a different build than v4.1.1.
Extension points. Override at the config layer (and via env vars) rather than forking. If the package ships stubs or templates, republish and edit those instead of patching vendor code; forking puts you on a maintenance path for a package whose entire value is staying current with its defaults.
If you genuinely need to call Go binaries, don't force this package into that role. Laravel's Illuminate\Support\Facades\Process (or Symfony Process) gives you streamed output, exit codes, timeouts, and environment handling in ~10 lines:
$result = Process::path(config('go.working_dir'))
->timeout(120)
->run(config('go.binary_path').' --flag');
$result->throw();
$result->output(); // streamed via ->run(fn ($type, $chunk) => ...) if needed
composer update.--no-interaction plus explicit selection flags.php artisan config:clear. Cached config is the number one cause of "my changes did nothing" with packages that read defaults at boot.composer.lock committed so a bad run is one git checkout away from recovery.php artisan tinker → config('laravel-go')) and the installed versions (composer show <package>). The mismatch between "what the config says" and "what is actually installed" is where most confusion lives. Diffing vendor/daikazu/laravel-go/ against its tag also quickly reveals whether stubs or commands were customised locally.How can I help you explore Laravel packages today?