Run a web project you've already built (dist/, or whatever you call it) locally with the
Roves shell, straight from VS Code's own Run
and Debug view — no Rust or Python toolchain, and nothing added to your project. The
extension downloads the right prebuilt shell for your OS once, caches it outside your
workspace, and points it at your dist/ folder directly.
This isn't a real debugger — there are no breakpoints, no variables, no stack traces. It just
uses VS Code's Run and Debug UI (F5, the Debug Console, the stop button, a
preLaunchTask) as a launcher, since that UI already does everything a "build, then run this"
workflow needs, instead of this extension inventing its own settings/commands surface.
Add a configuration to your project's .vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "roves",
"request": "launch",
"name": "Run with Roves",
"preLaunchTask": "build",
"distFolder": "dist"
}
]
}(VS Code's own "Add Configuration…" in launch.json, or the Run and Debug view's
configuration dropdown, offers a Roves: Run snippet to start from.)
preLaunchTask is a plain VS Code task — e.g. in .vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "npm run build",
"presentation": { "reveal": "silent", "close": true }
}
]
}Press F5 (or Run and Debug → select this configuration → the ▷ button). The first time,
this downloads roves_shell_<platform>[_steam].zip from
Roves' GitHub releases for your
platform, showing progress in the status bar, and caches it under VS Code's own extension
storage — never inside your workspace. Every following run reuses that cached shell instantly.
It then writes a small launch.json (Roves' own, unrelated to VS Code's) next to the cached
shell binary pointing at your project's dist/index.html by absolute path, and launches it —
the same mechanism a real mach bundle output uses to find its own bundled content, just
pointed at your project directly instead. See src/shell.ts for exactly how.
Stop it from the debug toolbar's stop button, same as any other debug session. The shell's own stdout/stderr streams into the Debug Console.
| Property | Default | Description |
|---|---|---|
distFolder |
"dist" |
Folder (relative to the workspace root) containing your built index.html. |
version |
"latest" |
Roves shell version to run, e.g. "v0.4.6". "latest" always resolves to the newest published release. |
steam |
false |
Run the Steam-enabled shell variant instead of the plain one. |
steamAppId |
"" |
Steam App ID to run with (writes steam_appid.txt next to the shell binary). Only used when steam is enabled. |
windowSize |
"1280x720" |
Initial window size, as <width>x<height>. |
extraArgs |
[] |
Extra command-line arguments passed through to the shell on launch. |
None — just a built project with an index.html somewhere. Steam builds still need Steam
running locally if you want steam_appid.txt to actually resolve to anything.
- Downloaded shells are cached per version/platform/Steam-variant under VS Code's global storage and never cleaned up automatically — delete them yourself (from the extension's storage folder) if you want to reclaim disk space from old versions.
distFoldermust contain a loose (uncompressed) build — this extension doesn't pack content the waymach bundle --content-compress=autodoes; it isn't needed for a local dev loop.