Home / File/ createImportMeta.ts — vite Source File

createImportMeta.ts — vite Source File

Architecture documentation for createImportMeta.ts, a typescript file in the vite codebase. 8 imports, 1 dependents.

File typescript ModuleRunner SSRRuntime 8 imports 1 dependents 3 functions

Entity Profile

Dependency Diagram

graph LR
  d957f785_adef_de7a_92dc_045f724e6d34["createImportMeta.ts"]
  abfc9e70_3c15_b3f0_a595_3cf27afb7e64["utils.ts"]
  d957f785_adef_de7a_92dc_045f724e6d34 --> abfc9e70_3c15_b3f0_a595_3cf27afb7e64
  87fdb861_d26b_9010_7a55_34478977224c["importMetaResolver.ts"]
  d957f785_adef_de7a_92dc_045f724e6d34 --> 87fdb861_d26b_9010_7a55_34478977224c
  10f1d8d4_c841_b248_e3e8_0c71d1233d7b["createImportMetaResolver"]
  d957f785_adef_de7a_92dc_045f724e6d34 --> 10f1d8d4_c841_b248_e3e8_0c71d1233d7b
  bf48f7e9_65f6_54c3_7dce_f44769180bd7["types.ts"]
  d957f785_adef_de7a_92dc_045f724e6d34 --> bf48f7e9_65f6_54c3_7dce_f44769180bd7
  1d083602_27ca_5b45_20d0_0afaaa6b4de2["ModuleRunnerImportMeta"]
  d957f785_adef_de7a_92dc_045f724e6d34 --> 1d083602_27ca_5b45_20d0_0afaaa6b4de2
  81939ddb_795d_a69b_d1ea_fb1af459ccc2["utils.ts"]
  d957f785_adef_de7a_92dc_045f724e6d34 --> 81939ddb_795d_a69b_d1ea_fb1af459ccc2
  b4ab10d7_7a96_e400_2c45_786b44953214["posixPathToFileHref"]
  d957f785_adef_de7a_92dc_045f724e6d34 --> b4ab10d7_7a96_e400_2c45_786b44953214
  be41a372_59cc_62a2_ac0d_eb893105eb81["toWindowsPath"]
  d957f785_adef_de7a_92dc_045f724e6d34 --> be41a372_59cc_62a2_ac0d_eb893105eb81
  29e248d2_9983_1037_00e6_8bcd9ee87840["runner.ts"]
  29e248d2_9983_1037_00e6_8bcd9ee87840 --> d957f785_adef_de7a_92dc_045f724e6d34
  style d957f785_adef_de7a_92dc_045f724e6d34 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { isWindows } from '../shared/utils'
import { createImportMetaResolver } from './importMetaResolver'
import type { ModuleRunnerImportMeta } from './types'
import { posixDirname, posixPathToFileHref, toWindowsPath } from './utils'

const envProxy = new Proxy({} as any, {
  get(_, p) {
    throw new Error(
      `[module runner] Dynamic access of "import.meta.env" is not supported. Please, use "import.meta.env.${String(p)}" instead.`,
    )
  },
})

export function createDefaultImportMeta(
  modulePath: string,
): ModuleRunnerImportMeta {
  const href = posixPathToFileHref(modulePath)
  const filename = modulePath
  const dirname = posixDirname(modulePath)
  return {
    filename: isWindows ? toWindowsPath(filename) : filename,
    dirname: isWindows ? toWindowsPath(dirname) : dirname,
    url: href,
    env: envProxy,
    resolve(_id: string, _parent?: string) {
      throw new Error('[module runner] "import.meta.resolve" is not supported.')
    },
    // should be replaced during transformation
    glob() {
      throw new Error(
        `[module runner] "import.meta.glob" is statically replaced during ` +
          `file transformation. Make sure to reference it by the full name.`,
      )
    },
    // @types/node adds `main` to `import.meta`, but we don't add that for the defaultImportMeta
  } satisfies Omit<ModuleRunnerImportMeta, 'main'> as any
}

/**
 * Create import.meta object for Node.js.
 */
export function createNodeImportMeta(
  modulePath: string,
): ModuleRunnerImportMeta {
  const defaultMeta = createDefaultImportMeta(modulePath)
  const href = defaultMeta.url

  const importMetaResolver = createImportMetaResolver()

  return {
    ...defaultMeta,
    main: false,
    resolve(id: string, parent?: string) {
      const resolver = importMetaResolver ?? defaultMeta.resolve
      return resolver(id, parent ?? href)
    },
  }
}

Domain

Subdomains

Frequently Asked Questions

What does createImportMeta.ts do?
createImportMeta.ts is a source file in the vite codebase, written in typescript. It belongs to the ModuleRunner domain, SSRRuntime subdomain.
What functions are defined in createImportMeta.ts?
createImportMeta.ts defines 3 function(s): createDefaultImportMeta, createNodeImportMeta, envProxy.get.
What does createImportMeta.ts depend on?
createImportMeta.ts imports 8 module(s): ModuleRunnerImportMeta, createImportMetaResolver, importMetaResolver.ts, posixPathToFileHref, toWindowsPath, types.ts, utils.ts, utils.ts.
What files import createImportMeta.ts?
createImportMeta.ts is imported by 1 file(s): runner.ts.
Where is createImportMeta.ts in the architecture?
createImportMeta.ts is located at packages/vite/src/module-runner/createImportMeta.ts (domain: ModuleRunner, subdomain: SSRRuntime, directory: packages/vite/src/module-runner).

Analyze Your Own Codebase

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

Try Supermodel Free