LazyDev
Run npm scripts, Composer scripts, Laravel artisan commands, Make targets, and docker-compose services with one click from the sidebar — no typing required.
Features
Project discovery
- Auto-detects package manager (bun / pnpm / yarn / npm) via lockfile
- Auto-detects Composer scripts from
composer.json
- Adds common Laravel
artisan commands when an artisan file is present
- Reads
Makefile targets (make runner)
- Reads
docker-compose.yml / compose.yml services (docker compose up -d <service>)
- Nested project scanning for monorepos:
lazydev.scanDepth (0–4) discovers projects below each workspace folder root, skipping node_modules, vendor, .git, and friends
Running
- Pins common scripts and commands (
dev, build, start, test, lint, serve, migrate) at the top
- Run multiple scripts and commands in parallel, each in its own terminal
- Run with arguments — context-menu action prompts for extra args (
--watch, User --migration, …) appended to the command
- Placeholders in custom commands —
${model} or ${env:staging} prompts you for values before running
- Kill all terminals at once (
LazyDev: Kill All Terminals)
- Auto-refreshes when manifests change, with debouncing so rapid saves don't thrash the UI
Organization
- Favorites and Recent shortcuts
- Custom commands (workspace, local, or global storage) with tool scoping (
artisan, composer, npm, pnpm, yarn, bun, go, cargo, make, docker-compose)
- Duplicate any custom command or preset from its context menu
- Presets: run a group of items in parallel or sequence, with optional stop-on-error, per-step max wait, and finish notifications
- Env profiles: named environment variable sets per workspace folder; the active profile's vars are injected into runs and previewed from the command context menu
- Reorder mode with drag-and-drop for Favorites, Custom Commands, and Presets
UX
- Fuzzy search (
Ctrl+F inside the panel) with keyboard navigation
- Context menus on every row (run, run with args, stop, show, edit, duplicate, delete, favorite, copy)
- Desktop notifications on preset completion, plus an optional policy for individual scripts (
lazydev.scriptNotifications)
- Status bar indicator while items are running (
lazydev.statusBar.enabled)
- Auto-close finished terminals (
lazydev.autoCloseTerminal)
- Command palette runner:
LazyDev: Run Command…
- Export / import your commands, presets, and env profiles as JSON
Commands
| Command |
Description |
LazyDev: Rescan Commands |
Force a full rescan of the workspace |
LazyDev: Run Command… |
Fuzzy-pick and run any script, command, or preset |
LazyDev: Kill All Terminals |
Kill every terminal opened by LazyDev |
LazyDev: Export Config… |
Export custom commands, presets, and env profiles to JSON |
LazyDev: Import Config… |
Import a previously exported config file |
LazyDev: Update Extension |
Update LazyDev from the Marketplace |
LazyDev: Test Desktop Notification |
Verify native notifications work |
Settings
| Setting |
Default |
Description |
lazydev.packageManager |
auto |
Package manager to use: auto, npm, bun, pnpm, or yarn |
lazydev.pinnedScripts |
["dev", "build", "start", "test", "lint"] |
Script/command names pinned to the top of project sections |
lazydev.scanDepth |
0 |
Directory levels to scan for nested projects (0–4). 0 only scans workspace folder roots |
lazydev.scriptNotifications |
off |
Notification policy for scripts/commands: off, errors, or always. Presets use their own per-preset option |
lazydev.autoCloseTerminal |
never |
Close finished terminals: never, onSuccess, or always |
lazydev.statusBar.enabled |
true |
Show a status bar item while commands are running |
lazydev.desktopNotifications.enabled |
true |
Master toggle for desktop finish notifications |
lazydev.customCommands |
[] |
Custom commands (workspace storage) |
lazydev.presets |
[] |
Presets (workspace storage) |
lazydev.envProfiles |
[] |
Env profiles (workspace storage) |
Placeholder syntax
Custom command strings support placeholders that prompt before running:
${name} — prompts for a value
${name:default} — prompts with a default value
Example: php artisan make:model ${model} -m && php artisan migrate --path=database/migrations/${model:users}
Requirements
- Node.js projects: any of
npm, bun, pnpm, or yarn on PATH
- Composer scripts:
composer on PATH
- Artisan: PHP on
PATH and an artisan file in the project
- Make targets:
make on PATH
- Compose services:
docker on PATH
Development
npm test # unit tests for the catalog and webview shell (no VS Code needed)
npm run package # build a .vsix
License
MIT
| |