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

runnerImport.spec.ts — vite Source File

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

Entity Profile

Dependency Diagram

graph LR
  8e5be4f8_47ed_25d2_b54a_787696793bf1["runnerImport.spec.ts"]
  b5e1db85_5394_4902_e419_6145447db3eb["runnerImport.ts"]
  8e5be4f8_47ed_25d2_b54a_787696793bf1 --> b5e1db85_5394_4902_e419_6145447db3eb
  585bf922_8932_bdb0_98d0_ee522538cb6d["runnerImport"]
  8e5be4f8_47ed_25d2_b54a_787696793bf1 --> 585bf922_8932_bdb0_98d0_ee522538cb6d
  abfc9e70_3c15_b3f0_a595_3cf27afb7e64["utils.ts"]
  8e5be4f8_47ed_25d2_b54a_787696793bf1 --> abfc9e70_3c15_b3f0_a595_3cf27afb7e64
  f094d39d_cd97_2548_86c3_38902c2f3301["slash"]
  8e5be4f8_47ed_25d2_b54a_787696793bf1 --> f094d39d_cd97_2548_86c3_38902c2f3301
  51e96894_3556_ed5c_1ede_97d449867adf["node:path"]
  8e5be4f8_47ed_25d2_b54a_787696793bf1 --> 51e96894_3556_ed5c_1ede_97d449867adf
  a340ba46_b2b7_3048_3bb3_6907a74c8464["vitest"]
  8e5be4f8_47ed_25d2_b54a_787696793bf1 --> a340ba46_b2b7_3048_3bb3_6907a74c8464
  54c37fea_4fe7_2693_71cb_1276b77f55f9["vite"]
  8e5be4f8_47ed_25d2_b54a_787696793bf1 --> 54c37fea_4fe7_2693_71cb_1276b77f55f9
  style 8e5be4f8_47ed_25d2_b54a_787696793bf1 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { resolve } from 'node:path'
import { describe, expect, test } from 'vitest'
import { loadConfigFromFile } from 'vite'
import { runnerImport } from '../ssr/runnerImport'
import { slash } from '../../shared/utils'

// eslint-disable-next-line n/no-unsupported-features/node-builtins
const isTypeStrippingSupported = !!process.features.typescript

describe('importing files using inlined environment', () => {
  const fixture = (name: string) =>
    resolve(import.meta.dirname, './fixtures/runner-import', name)

  test('importing a basic file works', async () => {
    const { module } = await runnerImport<
      typeof import('./fixtures/runner-import/basic')
    >(fixture('basic'))
    expect(module.test).toEqual({
      field: true,
    })
  })

  test("cannot import cjs, 'runnerImport' doesn't support CJS syntax at all", async () => {
    await expect(() =>
      runnerImport<typeof import('./fixtures/runner-import/basic')>(
        fixture('cjs.js'),
      ),
    ).rejects.toThrow('module is not defined')
  })

  test('can import vite config', async () => {
    const { module, dependencies } = await runnerImport<
      typeof import('./fixtures/runner-import/vite.config')
    >(fixture('vite.config'))
    expect(module.default).toEqual({
      root: './test',
      plugins: [
        {
          name: 'test',
        },
      ],
    })
    expect(dependencies).toEqual([slash(fixture('plugin.ts'))])
  })

  test('can import vite config that imports a TS external module', async () => {
    const { module, dependencies } = await runnerImport<
      typeof import('./fixtures/runner-import/vite.config.outside-pkg-import.mjs')
    >(fixture('vite.config.outside-pkg-import.mts'))

    expect(module.default.__injected).toBe(true)
    expect(dependencies).toEqual([
      slash(resolve(import.meta.dirname, './packages/parent/index.ts')),
    ])

    // confirm that it fails with a bundle approach
    if (!isTypeStrippingSupported) {
      await expect(async () => {
        const root = resolve(import.meta.dirname, './fixtures/runner-import')
        await loadConfigFromFile(
          { mode: 'production', command: 'serve' },
          resolve(root, './vite.config.outside-pkg-import.mts'),
          root,
          'silent',
        )
      }).rejects.toThrow('Unknown file extension ".ts"')
    }
  })

  test('dynamic import', async () => {
    const { module } = await runnerImport<any>(fixture('dynamic-import.ts'))
    await expect(() => module.default()).rejects.toMatchInlineSnapshot(
      `[Error: Vite module runner has been closed.]`,
    )
    // const dep = await module.default();
    // expect(dep.default).toMatchInlineSnapshot(`"ok"`)
  })
})

Domain

Dependencies

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free