Task Explorer - Tasks and Scripts Visual Control
 |
If you have kids, hug and squeeze them every single chance you get... I lost my daughter ~2 years ago, I loved her with every ounce of my soul, now every day is filled with overwhelming sadness, I am... 4everbroken. We were working on this together when she left me, please consider purchasing a (cheap++) license when the licensing scheme goes into effect. |
 |



Description
Provides configurable treeviews that display all supported tasks and scripts, organized by project folder and groupings. Tasks can be opened for view/edit, executed, stopped, restarted, etc.
Table of Contents
Screenshots by Version
| Latest Explorer Tray |
Sidebar View (v1.7) |
Task Type Groups (v1.13) |
 |
 |
 |
| Grunt/Gulp in Subfolders (v1.14) |
Npm Commands (v1.16) |
Task Groupings (v1.23) |
 |
 |
 |
| Multi-Level Task Groupings (v1.29) |
Run with Args, No Terminal (1.30) |
Last Tasks (1.25) Favorites (2.0) |
 |
 |
 |
Requirements
- NodeJS 22.15+
- Visual Studio Code v1.102+
"Should" work with NodeJS 18 and VSCode 1.68+, recommended version of VSCode is 1.102.x or above and NodeJS 22.15+.
Version 3
- Significant performance enhancements
- Several fixes including longtime pre-v2 bugs
- TaskMonitor View | fullscreen task controls
- ESLint static type task provider
- NodeJS script type task provider
- NPM task provider to replace the limited VSCode provider
- Improvements running NPM tasks for both internal and VSCode provider
- Typescript task provider to replace the limited VSCode provider
- Laravel task provider (via collabarator)
- Optional encrypted data persistence
- Taskfile caching (optional) | lower startup times
- Restoration of tasktree 'collapsed' or 'expanded' node states
- Stats and Runtime Tracking
- Stats and Runtime Quick Reports
- Re-organized Settings with groups
- Enhanced Sidebar View container
- Improved grouping of multiple taskfiles in same project
- Support for up to 15 tree grouping levels
- Release Notes View
- Improved logging for better support and faster resolution of issues
Features by Pre-V3 Release
- v2.7 - External provider integration API #22
- v2.6 - Composer support #150 Include shellscripts with no extension #153 Rename tasks #164
- v2.5 - Webpack build - Runs 10-15% faster.
- v2.4 - Add Pipenv support for Python Pipfile scripts. (thanks rob4226) #155
- v2.3 - App-Publisher v2.0 support. Several fixes including long time issue #143.
- v2.2 - Support for Maven (closes #107)
- v2.1 - App Publisher changelog pull tasks
- v2.0 - All async-await processing, Favorites (closes #101), Clear special task lists
- v1.30 - Configurable default click action (closes #97), Add 'Run with Arguments' command (closes #88), Add 'Run with NoTerminal' command (closes #39) (note that as of VSCode 1.53, there seems to be a bug that prevents running tasks without showing the terminal).
- v1.29 - Support multi-level task groupings (closes #129), Support user tasks (closes #127)
- v1.28 - Support Makefile aliases (thanks MichaelCurrin)
- v1.27 - Use gulp and ant to find their respective tasks (configurable on/off) (closes #105), Make grouping separator configurable (thanks richarddavenport)
- v1.26 - Add 'Running Task' status bar message (refs #47)
- v1.25 - Add 'Last Tasks' pseudo-folder
- v1.24 - Add 'Open Terminal' button to running tasks (closes #23)
- v1.23 - Task groupings with dashed task groups (Off by default)
- v1.22 - Major performance enhancements - Task Tree / Task Scanning
- v1.21 - Add option to keep terminal open after stopping task (closes #51)
- v1.20 - Add support for restarting task (thanks antfu)
- v1.19 - App-Publisher task support for BETA testing
- v1.18 - Add 'Add to excludes' action in task file node context menu
- v1.17 - Add 'Run last task' button to titlebar
- v1.16 - Add npm management tasks to npm file node context menus
- v1.15 - Support for gradle tasks (includes provider) (closes #15)
- v1.14 - Support for grunt and gulp task files not located in the project root (closes #12)
- v1.13 - Multiple task files of the same type placed within a group node for less clutter in folder level nodes
- v1.12 - Support for bash, batch, perl, powershell, python, ruby, and nsis scripts (includes provider)
- v1.11 - N/A - Obsolete Batch Task Provider replaced by v1.12 ScriptProvider
- v1.10 - Support for Makefiles (includes provider)
- v1.9 - Support for gulp and grunt tasks (includes provider)
- v1.8 - Support for ant files not named [Bb]uild.xml, ansicon output colorization fixed
- v1.7 - Two view types - Use one or both of either SideBar View and/or Explorer Tray
- v1.6 - Progress icons for running tasks
- v1.6 - Stop execution button for running tasks
- v1.5 - Support for Apache Ant tasks (includes provider)
- v1.4 - Support for TSC tasks
- v1.3 - Support for Visual Studio Code tasks
- v1.2 - Convenient layout - groups all tasks by project folder, by task file, by task
- v1.1 - Supports multi-root or single-root workspaces
- v1.0 - Open and launch NPM scripts as tasks
Configuring Global Excludes, Apache Ant and Bash Globs
The setting exclude defines a file/directory pattern or an array of file/directory patterns to ignore using Glob Patterns or a valid File URI. The setting applies to all script types. For example:
taskexplorer.exclude: [ "**/.vscode-test/**", "**/vendor/**", "**/out/**", "**/output/**", "/c:/projects/project1/src/theme/test/package.json" ]
Note that the glob pattern "**/node_modules/**" is applied by default to the excludes list in all cases. Using the exclude configuration can greatly improve performance in large workspaces if configured correctly.
Task files that are found by Task Explorer can also be added to the excludes list via the tree node context menu, by right clicking the task file or task group node, and selecting Add to Excludes.
Apache Ant uses an .xml file extension, the setting globPatternsAnt can be used to specify other file names other than [Bb]uild.xml to include as ant files so that all xml files do not need to be searched (slowing down tree refreshes in large workspaces or project with a large number of various xml files). The setting defines a file pattern or an array of file patterns to include using Glob Patterns or a valid File URI, for example:
taskexplorer.globPatternsAnt: [ "**/extraTasks.xml", "**/scripts/ant/*.xml", "/c:/projects/project1/scripts/test/antetests.xml" ]
Note that the glob pattern "**/[Bb]uild.xml" is applied by default to the Ant includes list in all cases. If you don't include the asterisked glob pattern **/ first in the string, files in sub-folders will not be found.
In the same way as for Ant tasks, Bash scripts without extensions can be configured to be found by the Bash Task Provider by using glob patterns in the same way, with the globPatternsBash setting:
taskexplorer.globPatternsBash: [ "**/bash_scripts/**", "**/sh/scripts/**", "/usr/local/bin/start_task" ]
Ant and Gulp Self-Provided Tasks
By default, a custom parser is used to locate Ant and Gulp tasks in respective files. This may be fine in most cases, but in cases where the script and/or build files become complex, or there is something in the file that was not coded into the parser, you can use the ant and gulp programs themselves to find their own tasks. Note however that turning this on has a negative performance impact when refreshing and providing tasks to the VSCode Task Host.
Using Groups with a Separator
The Groups With Separator option is an extra level of task groupings that can be made based on a configured separation character in the script or task name. This option can be turned on/off with the Group With Seperator 'Settings -> Extensions -> Task Explorer -> Grouping' options in the VSC Settings, the default is on and the default separator is a dash/hyphen ("-").
For example, consider 10 npm tasks, 5 of which all start with the string dev-, 5 of which start with the string prod-. Prior to Version 1.23, this would create 10 individual task nodes within the main npm task node in the task tree:
npm
dev-build
dev-build-server
dev-build-themes
dev-cp-from-binVV
dev-clean
prod-build
prod-build-server
prod-build-themes
prod-cp-from-bin
prod-clean
By enabling the Group With Separator option in Settings and setting the Group Separator to a dash ("-") two new grouped nodes would be created underneath the main npm node, one called dev and the other called prod. Each of these two sub-nodes of course would contain the respective dev- and prod- scripts/tasks, minus the prepended group name:
npm
dev
build
build-server
build-themes
cp-from-bin
clean
prod
build
build-server
build-themes
cp-from-bin
clean
Internally Provided Tasks vs. VSCode Provided Tasks
Workspace (.vscode/tasks.json) tasks are provided by VSCode. All other task types are or can be internally provided by TE. It is recommended to use the TE NPM provider as opposed to the provider that ships with the VSC IDE, and for a significant increase in performance, ensure that the 'Settings -> Extensions -> Npm -> Auto Detect' options is turned off** in VSCode Settings. By default this is turned on, so if NPM tasks are randomly not displaying or NPM task startup is lagging, please check this setting. It is also recommended that the Grunt and Gulp providers that ship with the VSC IDE are turned off as well, 'Settings -> Extensions -> Grunt -> Auto Detect' and 'Settings -> Extensions -> Gulp -> Auto Detect'.
Detection of all internally provided task types can be turned on/off in Settings - 'Settings -> Extensions -> Task Explorer -> Task Providers'.
Running Shell Scripts
Shell scripts, e.g. Bash/sh, batch, powershell, will have the shell executable automatically set to the corresponding shell when the script is ran. The shell executable used can be set explicitly in the VSC Settings, i.e. 'Settings -> Extensions -> Task Explorer -> Providers -> Paths to Programs'.
Task Icon Animations
FOr whatever reason, on some systems the animated running task icon eats a lot of CPU. If this is your case, the animated icon can be turned off in settings (on by default).
Task Monitor
The Task Monitor is a webview style task console, i.e. a glorified console for developers going blind, offering some different options and a different look and feel as opposed to the original task treeviews.

Task Reports and Details
For debugging or curiosity, sme initial reports or details pages can be generated listing all parsed tasks, usage over time, etc. You can generate reports and/or details pages via various context menus or navigation header icon buttons.

Feedback & Contributing
App-Publisher and Webpack-Wrap

Integrates with the app-publisher and webpack-wrap utility packages that emulate a small scale ci environment run locally from a project workspace, i.e. CI without the headache for individual devs and small teams.
Rate It - Leave Some Stars
Please rate your experience with stars... like five of them ;)
Licensing
Please consider purchasing a cheap++ license to support continued development and my beloved daughter's plan.
Thank You
Icon Contributors:
Other Contributors:
- antfu
- eamodio (fixed #114)
- MichaelCurrin
- tiansin
- JacobParis
- Spitfire1900