Run Config
Run Config adds a one-click deploy button to the Visual Studio Code status bar and copies files from your current workspace to a target directory defined in run.json.
It is designed for workflows where a project must be pushed into an existing runtime folder fast, for example game servers, local test environments, legacy applications, modding setups, or any folder-based deployment target.
Why Run Config
- Add a
$(play) button directly to the VS Code status bar
- Copy files recursively from the current project to a target folder
- Support exact excludes, relative paths, and glob patterns
- Replace existing files or skip them, depending on configuration
- Keep extra files in the target directory unless explicit cleanup is enabled
- Choose between multiple deployment profiles from Command Palette
- Reload configuration automatically when
run.json changes
- Show progress, cancellation, and a readable execution report
- Validate
run.json with JSON Schema support
Typical Use Cases
- Deploy AMX Mod X or other game server files into a prepared server directory
- Push build output into a local integration or QA folder
- Copy selected project content into a shared environment without shell scripts
- Keep repeatable local deployment steps inside the repository
How It Works
- Create
run.json in the root of your workspace.
- Set
source and target.
- Click the status bar button or run
Run Config: Execute.
- The extension copies files using the Node.js filesystem API.
By default, files that exist only in the target folder are preserved.
When run.json is present and enabled, Run Config shows a button in the right side of the VS Code status bar.
Examples:
$(play) Execute
$(play) На сервер
$(beaker) Test Deploy
During execution the button changes to $(sync~spin) Running..., then returns immediately after the copy operation completes.
Commands
Run Config: Выполнить
Run Config: Выбрать профиль
The default command runs the profile defined by defaultProfile, or the single configuration when profiles are not used.
Single-Profile Configuration
Create a run.json file like this:
{
"enabled": true,
"buttonText": "$(play) Выполнить",
"source": ".",
"target": "C:\\Users\\TiGRiS\\Desktop\\СЕРВЕР\\cstrike",
"exclude": [
".git",
".vscode",
"node_modules",
"run.json"
],
"overwrite": true,
"deleteExtraneous": false,
"confirmBeforeRun": false,
"showNotification": true,
"followSymlinks": false
}
Configuration Fields
enabled: Show or hide the status bar button for this workspace
buttonText: Status bar text, including codicons such as $(play)
source: Source directory relative to the folder that contains run.json
target: Absolute or relative destination directory
exclude: Files and folders to skip
overwrite: Replace existing files in the target directory
deleteExtraneous: Delete files that do not exist in the source directory
confirmBeforeRun: Ask for confirmation before copying
showNotification: Show a completion notification
followSymlinks: Follow symbolic links when copying
Multi-Profile Configuration
Run Config also supports multiple deployment targets in a single file:
{
"defaultProfile": "server",
"profiles": {
"server": {
"buttonText": "$(play) На сервер",
"source": ".",
"target": "C:\\Users\\TiGRiS\\Desktop\\СЕРВЕР\\cstrike",
"exclude": [
".git",
".vscode",
"node_modules",
"run.json"
],
"overwrite": true,
"deleteExtraneous": false
},
"test-server": {
"buttonText": "$(beaker) На тестовый сервер",
"source": ".",
"target": "D:\\CS-Test\\cstrike",
"overwrite": true,
"deleteExtraneous": false
}
}
}
Behavior:
- Clicking the status bar button runs
defaultProfile
Run Config: Выбрать профиль opens a Quick Pick
- The chosen profile runs immediately
- Choosing a profile does not rewrite
run.json
Exclude Rules
The exclude array supports:
- Exact names:
run.json
- Relative paths:
build/output.log
- Directory patterns:
build/**
- File patterns:
*.tmp
- Recursive glob patterns:
**/*.log
Safety
Run Config is intentionally conservative.
deleteExtraneous is false by default
- The extension does not execute shell commands from
run.json
- The configuration is treated as data, not code
- The target directory cannot be the same as the source directory
- The target directory cannot be inside the source directory
- Symbolic links are ignored unless
followSymlinks is explicitly enabled
- Dangerous deletion targets such as drive roots are rejected
Output and Progress
Each execution provides:
- A cancellable progress notification
- A detailed
Run Config output channel log
- A readable summary with copied, replaced, skipped, deleted, and errored counts
Example summary:
Copied: 24
Replaced: 7
Skipped: 3
Created directories: 5
Errors: 0
Time: 184 ms
JSON Schema Support
This extension contributes JSON validation for run.json, including:
- field descriptions
- default values
- structure validation for both single-profile and multi-profile formats
Requirements
- Visual Studio Code 1.91 or newer
Notes
- If
defaultProfile points to a missing profile, execution stops with a clear error
- Configuration changes are picked up without restarting VS Code
- The extension uses
fs/promises and the VS Code API only