Home / File/ watcher.spec.ts — vite Source File

watcher.spec.ts — vite Source File

Architecture documentation for watcher.spec.ts, a typescript file in the vite codebase. 5 imports, 0 dependents.

Entity Profile

Dependency Diagram

graph LR
  6dce4d52_b6d3_50fc_d206_061052485542["watcher.spec.ts"]
  a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e["index.ts"]
  6dce4d52_b6d3_50fc_d206_061052485542 --> a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e
  19009191_26ac_2526_d048_41ac02638e55["createServer"]
  6dce4d52_b6d3_50fc_d206_061052485542 --> 19009191_26ac_2526_d048_41ac02638e55
  51e96894_3556_ed5c_1ede_97d449867adf["node:path"]
  6dce4d52_b6d3_50fc_d206_061052485542 --> 51e96894_3556_ed5c_1ede_97d449867adf
  6feed3e8_55b8_cce7_b5ef_e40b872585f7["node:url"]
  6dce4d52_b6d3_50fc_d206_061052485542 --> 6feed3e8_55b8_cce7_b5ef_e40b872585f7
  a340ba46_b2b7_3048_3bb3_6907a74c8464["vitest"]
  6dce4d52_b6d3_50fc_d206_061052485542 --> a340ba46_b2b7_3048_3bb3_6907a74c8464
  style 6dce4d52_b6d3_50fc_d206_061052485542 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { type ViteDevServer, createServer } from '../index'

const stubGetWatchedCode = /\(\)\s*\{\s*return this;\s*\}/

describe('watcher configuration', () => {
  let server: ViteDevServer | undefined

  afterEach(async () => {
    if (server) {
      await server.close()
      server = undefined
    }
  })

  it('when watcher is disabled, return noop watcher', async () => {
    server = await createServer({
      server: {
        watch: null,
      },
    })
    expect(server.watcher.add.toString()).toMatch(stubGetWatchedCode)
  })

  it('when watcher is not disabled, return chokidar watcher', async () => {
    server = await createServer({
      server: {
        watch: {},
      },
    })
    expect(server.watcher.add.toString()).not.toMatch(stubGetWatchedCode)
  })

  it('should watch the root directory, config file dependencies, dotenv files, and the public directory', async () => {
    const root = fileURLToPath(
      new URL('./fixtures/watcher/nested-root', import.meta.url),
    )
    server = await createServer({ root })
    await new Promise((resolve) => server!.watcher.once('ready', resolve))
    // Perform retries here as chokidar may still not be completely watching all directories
    // after the `ready` event
    await vi.waitFor(() => {
      const watchedDirs = Object.keys(server!.watcher.getWatched())
      expect(watchedDirs).toEqual(
        expect.arrayContaining([
          root,
          resolve(root, '../config-deps'),
          resolve(root, '../custom-env'),
          resolve(root, '../custom-public'),
        ]),
      )
    })
  })
})

Domain

Dependencies

Frequently Asked Questions

What does watcher.spec.ts do?
watcher.spec.ts is a source file in the vite codebase, written in typescript. It belongs to the ViteCore domain.
What does watcher.spec.ts depend on?
watcher.spec.ts imports 5 module(s): createServer, index.ts, node:path, node:url, vitest.
Where is watcher.spec.ts in the architecture?
watcher.spec.ts is located at packages/vite/src/node/server/__tests__/watcher.spec.ts (domain: ViteCore, directory: packages/vite/src/node/server/__tests__).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free