Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>ScriptPilot - npm Script RunnerNew to Visual Studio Code? Get it now.
ScriptPilot - npm Script Runner

ScriptPilot - npm Script Runner

AppestoX

| (0) | Free
Run, stop and manage package.json scripts with one click. Pick your terminal, stop individual scripts or all at once.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

ScriptPilot — npm Script Runner

Run, stop and manage your package.json scripts with one click — no more typing npm run ... in the terminal.

ScriptPilot adds a panel to VS Code's Activity Bar that lists every script from every package.json in your workspace. Each script gets a ▶ run button; each running script gets a ■ stop button and a ↻ restart button. Every script runs in its own dedicated terminal, so you can start, watch, and kill them independently — or stop everything at once.


Screenshots

Script explorer in the Activity Bar — every script from package.json, one click to run:

ScriptPilot sidebar with scripts listed

Inline gutter run buttons — run a script straight from package.json:

Run button in the package.json gutter


Features

Feature Description
🗂 Script explorer Sidebar tree listing every script from every package.json in the workspace. Monorepo-aware: multiple packages appear as expandable groups. node_modules is always excluded.
▶ One-click run Click the play icon (or the script row itself) to run a script. Each script gets its own terminal named ▶ <script> — <package>.
■ Stop individual scripts A running script shows a green spinning icon and an inline stop button. Stopping disposes only that script's terminal, killing its process tree.
⏹ Stop All One button in the panel's title bar kills every running script at once.
↻ Restart Stop + relaunch a running script with one click.
🖥 Terminal profile picker Choose which terminal ScriptPilot uses: PowerShell, CMD, Git Bash, pwsh, or any custom profile from your terminal.integrated.profiles settings — or just use the workspace default.
📦 Package manager auto-detection Detects npm / yarn / pnpm / bun from the lockfile, walking up parent folders for monorepos. Can be overridden in settings.
⌨ Run with arguments Right-click a script → Run Script With Arguments... to append extra args.
📊 Status bar indicator Shows ▶ N scripts running. Click it to focus a script's terminal, stop one, or stop all from a quick-pick menu.
📋 Copy command Right-click → copy the exact shell command (e.g. pnpm run dev) to the clipboard.
🔄 Live refresh The tree updates automatically whenever any package.json is created, changed, or deleted.
🛡 Double-start protection Running an already-running script focuses its terminal and asks whether to restart, instead of silently starting a duplicate.

Getting Started

  1. Install ScriptPilot from the Extensions view (Ctrl+Shift+X, search "ScriptPilot").
  2. Open a workspace that contains a package.json.
  3. Click the ScriptPilot icon in the Activity Bar to see all your scripts.
  4. Click ▶ next to any script to run it in its own terminal.

Commands

All commands are available via the Command Palette (Ctrl+Shift+P) under the ScriptPilot: prefix.

Command Description
ScriptPilot: Stop All Running Scripts Kill every running script
ScriptPilot: Select Terminal Profile Choose the shell scripts run in
ScriptPilot: Refresh Scripts Rescan the workspace for package.json files
ScriptPilot: Show Running Scripts Quick-pick to focus/stop running scripts

Settings

Setting Type Default Description
scriptpilot.packageManager auto | npm | yarn | pnpm | bun auto Which package manager runs scripts. auto detects from the lockfile.
scriptpilot.terminalProfile string "" Terminal profile name (must match a name in terminal.integrated.profiles). Empty = workspace default.
scriptpilot.codeLens boolean false Show Run / Stop / Restart CodeLens buttons above each script in package.json files.
scriptpilot.clearBeforeRun boolean false Clear the terminal before running a script.
scriptpilot.exclude string[] [] Glob patterns of package.json paths to hide from the tree, e.g. ["examples/**"].

Example settings.json:

{
  "scriptpilot.packageManager": "pnpm",
  "scriptpilot.terminalProfile": "Git Bash",
  "scriptpilot.clearBeforeRun": true,
  "scriptpilot.exclude": ["e2e/**", "docs/**"]
}

Requirements

  • VS Code 1.85 or later
  • Node.js and a package manager (npm / yarn / pnpm / bun) in your project

Troubleshooting

The ScriptPilot icon doesn't appear. The extension activates when the workspace contains a package.json. Open a folder that has one, or run ScriptPilot: Refresh Scripts.

The panel says "No package.json scripts found". Your package.json has no scripts section, or it matches a scriptpilot.exclude pattern.

Scripts run with the wrong package manager. Detection is lockfile-based. If there's no lockfile it defaults to npm — set scriptpilot.packageManager explicitly.

Stop doesn't kill the process. Stop disposes the terminal, which kills its process tree. Rarely, a detached child process can survive; kill it from Task Manager.


Release Notes

1.0.0

Initial release: script explorer, run/stop/restart, terminal profile picker, package manager auto-detection, status bar indicator, run with arguments, copy command.


License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft