This extension allows configuring commands that get run whenever a file is saved or folder is changed in vscode.
- Following two events: onSaveDocument and onFolderChange:
- onFileChange - allows to track changes to the contents of an existing file
- onFolderChange - allows to track the deletion, addition and modification of files
- case insensitive workspace root folder
- Configure multiple commands that run when the event happened
- Regex pattern matching for files that trigger commands running
- Sync and async support
Add "filewatcher" configuration to user or workspace settings.
- "shell" - (optional) shell path to be used with child_process.exec options that runs commands.
- "autoClearConsole" - (optional) clear VSCode output console every time commands run. Defaults to false.
- "commands" - array of commands that will be run whenever a file is saved.
- "match" - a regex for matching which files to run commands on.
- "notMatch" - a regex for matching files not to run commands on.
NOTE Since this is a Regex, and also in a JSON string backslashes have to be double escaped such as when targetting folders. e.g. "match": "some\\folder\\.*"
- "cmd" - command to run. Can include parameters that will be replaced at runtime (see Placeholder Tokens section below).
- "isAsync" (optional) - defaults to false. If true, next command will be run before this one finishes.
Commands support placeholders similar to tasks.json.
- ${workspaceRoot}: case insensitive workspace root folder
- ${file}: path of saved file
- ${fileBasename}: saved file's basename
- ${fileDirname}: directory name of saved file
- ${fileExtname}: extension (including .) of saved file
- ${fileBasenameNoExt}: saved file's basename without extension
File content change tracking example. Configuration in .vscode\settings.json
{
"filewatcher.commands": [
{
"match": "\\.ts*",
"isAsync": true,
"cmd": "echo '${file} file content Changed'",
"event": "onFileChange"
}
]
}
Folder content change tracking example. Configuration in .vscode\settings.json
{
"filewatcher.commands": [
{
"match": "\\.*",
"isAsync": true,
"cmd": "echo '${file} folder content Changed'",
"event": "onFolderChange"
}
]
}