DevSpaces provides a predictable and repeatable way to work with multi-repo projects.
Define Stacks, keep them in a Stacks Repo, and your whole team can discover, create, and refine Workspaces with ease;
effortlessly handling cloning, layout, post-clone commands, tasks, and extensions — all automatically.
No more manual steps. No more inconsistent environments. No more day-1 dev blues. Just open, run, and get on with the good stuff.
If, like us, you’ve wrestled with submodules, monorepos, and “just run this script” … this will hurt significantly less.
Features
- Capture and discover Stacks with details on project Type, Platforms, and Steward
- Fetch Stack definitions from a git repo, and choose a Stack to setup its Workspace
- Clone all repos for that Stack as siblings inside the Workspace, honoring per-repo branches and bundling additional remotes
- Run post-clone commands (inc those in
tasks.json), e.g. bun: install
- Install extensions from the root repo's
.vscode/extensions.json
- Open the Workspace in the current or new window
- Refresh from the Stacks repo on demand
Setup
If your team is already using DevSpaces:
- Install UNIVERSALS.DevSpaces from the VS Code Marketplace
- Press
F1 to open the command palette, UNIVERSALS.DevSpaces: Create Workspace from Stack, and provide your teams Stacks git URL
- Choose a Stack, wait for DevSpaces to do it's thing, and Dev happy!
Stacks Repo
If you're the first in your team to use DevSpaces, you'll need to create a Stacks repo:
- Clone
universsals-devspaces-sample-stacks
- Edit/ copy
JSON files to define your Stacks
- Publish your Stacks Repo somewhere appropriately accessible to your team (GitHub, Azure DevOps, etc)
- Share the Stacks Repo URL with your team, and point DevSpaces to it as per Setup above
See Sample Stacks Readme for Stack Def structure and layout.
Logging
DevSpaces writes activity to its own Output Channel. Open via the View > Output menu (or Ctrl/ Cmd+Shift+U)
then pick UNIVERSALS.DevSpaces from the dropdown that normally shows Tasks or Git.
Errors during clone/ configuration are shown there in detail. DevSpaces also surfaces toasts for important notifications and critical failures.
Commands
Within the UNIVERSALS.DevSpaces extension, via the command palette (F1) you can also Refresh Stacks from Repo, and Switch Stacks Branch.
Commands manipulate configuration items universalsDevSpaces, stacksRepoUrl, stacksRepoRef, stacksRepoPath, and defaultRoot.
Known Issues
- Access control for private repos is assumed; probably fine most of the time
- No support for resync; if you change a Stack Def, current practice is to delete and recreate using DevSpaces
Development
UNIVERSALS.DevSpaces is in preview; feedback welcome. Source is on git, PRs welcome too.
The solution is built using Bun, to set up a dev env:
bun install
bun compile
You can then run a VS Code Extension Dev Host via F5.
License
UNIVERSALS is a META/FURY Venture, licensed under CCL-1.0. See https://ccl.fyi/license for details.