Configuration

Full reference for vis.json configuration options

Configuration

Create a vis.json file in your workspace root to configure target defaults, task runner options, and update preferences.

Target Defaults

Target defaults apply to all projects that have a matching script in their package.json:

{
    "targetDefaults": {
        "build": {
            "dependsOn": ["^build"],
            "outputs": ["{projectRoot}/dist/**"],
            "inputs": ["{projectRoot}/src/**"],
            "cache": true,
            "parallelism": true
        },
        "test": {
            "dependsOn": ["build"],
            "cache": true
        },
        "lint": {
            "cache": true
        }
    }
}
PropertyTypeDescription
dependsOn(string | object)[]Other targets this target depends on. Use ^build to depend on dependency projects' build target
outputsstring[]Output file patterns. Use {projectRoot} as a placeholder
inputs(string | object)[]Input patterns for cache invalidation
cachebooleanWhether this target is cacheable
parallelismbooleanWhether this target supports parallel execution

Task Runner Options

Configure the underlying task runner behavior:

{
    "taskRunnerOptions": {
        "parallel": 5,
        "smartLockfileHashing": true,
        "frameworkInference": true,
        "remoteCache": {
            "url": "https://cache.example.com",
            "token": "my-token",
            "teamId": "my-team"
        }
    }
}
OptionTypeDefaultDescription
parallelnumber3Maximum number of parallel tasks
smartLockfileHashingbooleanfalsePer-package lockfile hashing for better caching
frameworkInferencebooleanfalseAuto-detect framework environment variables
remoteCache.urlstringRemote cache server URL
remoteCache.tokenstringAuthentication token
remoteCache.teamIdstringTeam or namespace identifier

Update Defaults

Set defaults for vis check and vis update to avoid repeating options:

{
    "update": {
        "target": "minor",
        "include": ["@company/*"],
        "exclude": ["legacy-*", "deprecated-*"],
        "prerelease": false
    }
}
PropertyTypeDefaultDescription
targetstring"latest"Default update target
includestring[][]Glob patterns to always include
excludestring[][]Glob patterns to always exclude
prereleasebooleanfalseWhether to include prerelease versions

Full Example

{
    "targetDefaults": {
        "build": {
            "dependsOn": ["^build"],
            "outputs": ["{projectRoot}/dist/**"],
            "cache": true
        },
        "test": {
            "dependsOn": ["build"],
            "cache": true
        },
        "lint": {
            "cache": true
        }
    },
    "taskRunnerOptions": {
        "parallel": 5,
        "smartLockfileHashing": true,
        "frameworkInference": true
    },
    "update": {
        "target": "minor",
        "exclude": ["legacy-*"]
    }
}

Workspace Discovery

vis automatically discovers your workspace structure:

  1. pnpm — Reads pnpm-workspace.yaml for package patterns
  2. npm/yarn — Falls back to the workspaces field in root package.json
  3. Project metadata — Reads project.json files (Nx-compatible) for additional config like projectType, sourceRoot, and tags
  4. Dependency graph — Built from dependencies, devDependencies, and peerDependencies in each project's package.json
Support

Contribute to our work and keep us going

Community is the heart of open source. The success of our packages wouldn't be possible without the incredible contributions of users, testers, and developers who collaborate with us every day.Want to get involved? Here are some tips on how you can make a meaningful impact on our open source projects.

Ready to help us out?

Be sure to check out the package's contribution guidelines first. They'll walk you through the process on how to properly submit an issue or pull request to our repositories.

Submit a pull request

Found something to improve? Fork the repo, make your changes, and open a PR. We review every contribution and provide feedback to help you get merged.

Good first issues

Simple issues suited for people new to open source development, and often a good place to start working on a package.
View good first issues