- How do I install jord-jd/artisan-menu in a Laravel project?
- Install it with Composer using composer require jord-jd/artisan-menu. For most applications, prefer composer require --dev jord-jd/artisan-menu because the package is a developer-experience layer over console input. Use a production require only when your shipped Artisan commands are user-facing, such as installer wizards or customer-facing setup tools.
- Which Laravel and PHP versions does jord-jd/artisan-menu support?
- Version 4.0.0 declares Laravel support from 5.1 through 13 and raises the PHP floor from 7.0 to 7.1. The PHP 7.1 floor is a corrective change because runtime dependencies already required it. Treat the broad Laravel range as declared support and verify your exact Laravel and PHP combination, since endpoint-only testing can miss mid-range incompatibilities.
- How do I create an interactive Artisan menu with selectable options?
- The package provides a simple API for defining options and actions, which it renders as selectable CLI prompts. You use it to turn complex terminal workflows into navigable menus for commands, setup scripts, and developer tools. Check the package README for the exact menu-definition syntax and available prompt types.
- Can artisan-menu prompt for optional command arguments and repeatable options?
- Yes. Version 4.0.0 adds prompt coverage for optional command arguments plus command-specific flags, values, and repeatable options. That expands the interactive surface, so make sure every new prompt has a sensible default or a clear error path when input is not interactive.
- What happens when a user presses Escape during an Artisan menu prompt?
- In version 4.0.0, Escape now cancels a command during required input instead of being swallowed as it was previously. That behavior change can affect wrapper scripts or commands that relied on Escape as a no-op. The release notes do not specify the exact exit code or whether partial side effects occur before cancellation, so test any automation that depends on exit status.
- Does jord-jd/artisan-menu work in non-interactive environments like CI, cron, or Docker?
- Interactive prompts are risky in non-TTY contexts such as CI runners, cron jobs, docker exec without -it, queue workers, and deploy scripts. A blocking prompt can hang a pipeline rather than fail cleanly. Confirm that prompts are bypassed or that a --no-interaction flag or environment variable is honored consistently before using the package in automation.
- Where does artisan-menu store recent commands, and is that state safe to ignore?
- The 4.0.0 notes mention handling stale recent commands safely, which implies the package persists some recent-command history. The provided notes do not document the storage location, schema, TTL, permissions, or behavior on a read-only or missing filesystem. Inspect the package or its README, and verify it fails safely on ephemeral container filesystems.
- Should jord-jd/artisan-menu be a require or require-dev dependency?
- Default to require-dev because the package is a console input and developer-experience layer, not a runtime request-path dependency. Move it to require only if your shipped Artisan commands are themselves user-facing, such as installer wizards or setup tools exposed to customers. Also confirm the package does not register hot-path service providers or middleware you do not want in production.
- Is upgrading to jord-jd/artisan-menu v4.0.0 a breaking change?
- Version 4.0.0 is a major release even though the notes list no removals or deprecations. The likely breaking changes are the new Escape-cancels-command behavior during required input and the corrected PHP floor from 7.0 to 7.1. Test commands and wrapper scripts that assert on exit codes or rely on Escape doing nothing.
- What are alternatives to jord-jd/artisan-menu for interactive Laravel console prompts?
- Laravel Prompts provides first-party interactive prompt helpers in newer Laravel versions, and Symfony Console offers question helpers and selectable choices. You can also build custom Artisan commands for simple menus. Choose artisan-menu when you want a dedicated menu abstraction for selectable CLI options and actions, and check compatibility with your Laravel version.