Project Loader
Project Loader keeps a list of project folders in a sidebar so you can jump between them quickly. Each project can be opened in a new VS Code window, or opened in place while closing the current window.
Features
- Saved Projects sidebar in the Project Loader activity bar icon, listing every saved folder.
- Add Project saves the current workspace folder. If the folder is already saved, you are told so and nothing is duplicated.
- Auto-save on startup (optional, on by default) saves the first workspace folder when VS Code starts, if it is not already in the list.
- Per-project actions from the right-click menu (or the inline icons):
- Open in New Window
- Open and Close Current Window
- Remove Project (removes the entry only; the folder is not deleted)
- Missing folders are flagged with a warning icon instead of being hidden, so you can remove them.
- Two storage backends:
globalState (default): VS Code's extension global state.
jsonFile: a portable JSON file you can keep in a synced folder or copy to another machine.
Usage
- Open a folder in VS Code (
File > Open Folder…).
- Click the Project Loader icon in the activity bar.
- Click the + (Add Project) button in the Saved Projects view title, or run Project Loader: Add Project from the Command Palette.
- Right-click a project to:
- Open in New Window: opens the folder in a separate window and leaves the current one unchanged.
- Open and Close Current Window: opens the folder in the current window, replacing the workspace that is open there.
- Remove Project: removes the entry after confirmation.
Command Palette
| Command |
Description |
Project Loader: Add Project |
Saves the current workspace folder. |
Project Loader: Open Project |
Pick a saved project and open it in the current window. |
Project Loader: Open in New Window |
Pick a saved project and open it in a new window. |
Project Loader: Open and Close Current Window |
Pick a saved project and open it in the current window. |
Project Loader: Remove Project |
Pick a saved project to remove from the list. |
Project Loader: Refresh Projects |
Reloads the sidebar list. |
When a command runs from the Command Palette, it asks you to choose a project. When it runs from the sidebar context menu, it acts on the project you right-clicked.
Settings
| Setting |
Default |
Description |
projectLoader.storage |
globalState |
globalState or jsonFile. |
projectLoader.jsonFilePath |
"" |
Path to the JSON file used with jsonFile. Supports ~. A relative path is resolved against the extension's global storage folder. Leave empty to use <global storage>/projects.json. |
projectLoader.autoAddCurrentWorkspace |
true |
Save the first workspace folder automatically on startup if it is not already saved. |
{
"version": 1,
"projects": [
{
"path": "C:\\dev\\my-api",
"name": "my-api",
"addedAt": 1760000000000
}
]
}
A bare JSON array of the same objects is also accepted when reading.
Switching storage
Changing projectLoader.storage or projectLoader.jsonFilePath does not copy existing entries. The sidebar reads from the newly selected store, so add your projects again or copy the entries manually.
Installation
From a VSIX file
npm install
npm run package # produces project-loader-<version>.vsix
code --install-extension project-loader-0.1.0.vsix
Or in VS Code: Extensions view → … menu → Install from VSIX….
From source (development)
npm install
npm run compile # or: npm run watch
Press F5 in VS Code to launch an Extension Development Host.
Development
| Script |
Purpose |
npm run compile |
Type-check and compile src/ to out/. |
npm run watch |
Recompile on change. |
npm test |
Compile and run the unit tests in src/test/ (Node's built-in test runner). |
npm run package |
Build a .vsix with vsce. |
npm run publish |
Publish to the Visual Studio Marketplace with vsce. |
Project layout
src/
extension.ts Activation; wires up the tree view, commands and config listener
types.ts SavedProject model and runtime type guard
projectRepository.ts Add / remove / list rules (no VS Code API dependency)
storage/
projectStore.ts ProjectStore interface
globalStateStore.ts ExtensionContext.globalState backend
jsonFileStore.ts JSON file backend
storageFactory.ts Picks the backend from settings
views/
projectTreeProvider.ts TreeDataProvider and tree item for the sidebar
commands/
projectCommands.ts Command handlers (add, open, open in new window, remove, refresh)
utils/
paths.ts Path normalization and comparison
test/
projectRepository.test.ts Unit tests
Publishing
- Replace
publisher in package.json with your Marketplace publisher ID.
- Create a Personal Access Token for Azure DevOps with the Marketplace → Manage scope.
- Log in once:
npx vsce login <publisher-id>.
- Publish:
npm run publish (or npx vsce publish patch to bump the version as well).
Requirements
- VS Code 1.85 or newer.
- Node.js 18 or newer for development.
Notes
- "Open and Close Current Window" uses VS Code's
vscode.openFolder command with forceNewWindow: false. VS Code may prompt you if the current window has unsaved files.
- With
jsonFile storage, several VS Code windows can write to the same file. The last write wins.