Can I automatically start a task when a folder is opened?

This functionality was added in v1.30: Release notes: run task on folder open

Run on folder open

If you have a task that you always run when you open a folder, you can configure it to run automatically when that folder is opened by configuring its "runOn" property. We found this useful for making sure no one breaks our new strict null checks in the VS Code repository. By adding "runOn": "folderOpen", everyone who allows tasks to be run automatically will get markers when they violate the strict null check:

Example:

{
    "type": "npm",
    "script": "strict-null-check-watch",
    "label": "TS - Strict Null Checks",
    "isBackground": true,
    "problemMatcher": {
        "base": "$tsc-watch",
        "owner": "typescript-strict-null",
        "applyTo": "allDocuments"
    },
    "runOptions": {
        "runOn": "folderOpen"
    }
}

Example 2:

{
  "label": "Tasks: copy3",
  "type": "shell",
  "command": "gulp",
  "args": [
    "copy3",
    "--file",
    "${fileBasename}"
  ],
  "problemMatcher": [],
  "runOptions": {
    "runOn": "folderOpen"
  }
},

I create an extension that can do it. It is "Blade Runner". Try this! Blade Runner on Visual Studio Code Market Place


No, sorry. This is a good suggestion (ability to run a task on startup), can you please file an issue in the microsoft/vscode repo on GitHub? (Sorry, I can't post more than 2 links yet)?

In the meantime, here are a couple of options:

  • You can specify a particular task as a Build task and then press CMD+SHIFT+B when you open the folder to start the task. See here: https://code.visualstudio.com/docs/editor/tasks#_mapping-gulp-grunt-and-jake-output-to-problem-matchers

  • You could write an extension that is activated on startup and then runs gulp with the task name. See here for extension activation options: https://code.visualstudio.com/docs/extensionAPI/activation-events#_activationevents.


This is an old thread, but the question is still up to date. Blade Runner did not suit my needs, nor did any other extension.

I created an extension AutoLaunch that can run a specific task from tasks.json or launch a specific debug configuration from launch.json.