ChromeDevTools/vite-plugin-devtools-json

Vite plugin for generating `com.chrome.devtools.json` on the fly in the devserver.

405

stars

45

commits

TypeScript

primary language

Sep 10, 2026

updated

chrome
devtools
vite

README

Vite Plugin for DevTools Project Settings (devtools.json)

Vite plugin for generating the Chrome DevTools project settings file on-the-fly in the devserver.

This enables seamless integration with the new Chrome DevTools features

  1. DevTools Project Settings (devtools.json), and
  2. Automatic Workspace folders.

Installation

npm install -D vite-plugin-devtools-json

Usage

Add it to your Vite config

import {defineConfig} from 'vite';
import devtoolsJson from 'vite-plugin-devtools-json';

export default defineConfig({
  plugins: [
    devtoolsJson(),
    // ...
  ]
});

While the plugin can generate a UUID and save it in vite cache, you can also specify it in the options like in the following:

  plugins: [
    devtoolsJson({ uuid: "6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b" }),
    // ...
  ]

Options

NameTypeDefaultDescription
projectRootstringconfig.rootAbsolute path that will be reported to DevTools. Useful for monorepos or when the Vite root is not the desired folder.
normalizeForWindowsContainerbooleantrueConvert Linux paths to UNC form so Chrome on Windows (WSL / Docker Desktop) can mount them (e.g. via WSL or Docker Desktop). Pass false to disable.
Alias: normalizeForChrome (deprecated)_
uuidstringauto-generatedFixed UUID if you prefer to control it yourself.

Example with all options:

import { defineConfig } from 'vite';
import devtoolsJson from 'vite-plugin-devtools-json';

export default defineConfig({
  plugins: [
    devtoolsJson({
      projectRoot: '/absolute/path/to/project',
      normalizeForWindowsContainer: true,
      uuid: '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'
    })
  ]
});

The /.well-known/appspecific/com.chrome.devtools.json endpoint will serve the project settings as JSON with the following structure

{
  "workspace": {
    "root": "/path/to/project/root",
    "uuid": "6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b"
  }
}

where root is the absolute path to your {projectRoot} folder, and uuid is a random v4 UUID, generated the first time that you start the Vite devserver with the plugin installed (it is henceforth cached in the Vite cache folder).

Checkout bmeurer/automatic-workspace-folders-vanilla for a trivial example project illustrating how to use the plugin in practice.

Publishing

Googlers: We use go/wombat-dressing-room for publishing.

License

The code is under MIT License.

Contributors

bmeurer

23 commits

dependabot[bot]

10 commits

0xTaneja

2 commits

Rich-Harris

2 commits

ChromeDevTools/vite-plugin-devtools-json

Vite plugin for generating `com.chrome.devtools.json` on the fly in the devserver.

405

stars

45

commits

TypeScript

primary language

Sep 10, 2026

updated

chrome
devtools
vite

README

Vite Plugin for DevTools Project Settings (devtools.json)

Vite plugin for generating the Chrome DevTools project settings file on-the-fly in the devserver.

This enables seamless integration with the new Chrome DevTools features

  1. DevTools Project Settings (devtools.json), and
  2. Automatic Workspace folders.

Installation

npm install -D vite-plugin-devtools-json

Usage

Add it to your Vite config

import {defineConfig} from 'vite';
import devtoolsJson from 'vite-plugin-devtools-json';

export default defineConfig({
  plugins: [
    devtoolsJson(),
    // ...
  ]
});

While the plugin can generate a UUID and save it in vite cache, you can also specify it in the options like in the following:

  plugins: [
    devtoolsJson({ uuid: "6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b" }),
    // ...
  ]

Options

NameTypeDefaultDescription
projectRootstringconfig.rootAbsolute path that will be reported to DevTools. Useful for monorepos or when the Vite root is not the desired folder.
normalizeForWindowsContainerbooleantrueConvert Linux paths to UNC form so Chrome on Windows (WSL / Docker Desktop) can mount them (e.g. via WSL or Docker Desktop). Pass false to disable.
Alias: normalizeForChrome (deprecated)_
uuidstringauto-generatedFixed UUID if you prefer to control it yourself.

Example with all options:

import { defineConfig } from 'vite';
import devtoolsJson from 'vite-plugin-devtools-json';

export default defineConfig({
  plugins: [
    devtoolsJson({
      projectRoot: '/absolute/path/to/project',
      normalizeForWindowsContainer: true,
      uuid: '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'
    })
  ]
});

The /.well-known/appspecific/com.chrome.devtools.json endpoint will serve the project settings as JSON with the following structure

{
  "workspace": {
    "root": "/path/to/project/root",
    "uuid": "6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b"
  }
}

where root is the absolute path to your {projectRoot} folder, and uuid is a random v4 UUID, generated the first time that you start the Vite devserver with the plugin installed (it is henceforth cached in the Vite cache folder).

Checkout bmeurer/automatic-workspace-folders-vanilla for a trivial example project illustrating how to use the plugin in practice.

Publishing

Googlers: We use go/wombat-dressing-room for publishing.

License

The code is under MIT License.

Contributors

bmeurer

23 commits

dependabot[bot]

10 commits

0xTaneja

2 commits

Rich-Harris

2 commits

Languages

TypeScript

100.0%