Home / Function/ transformDynamicImport() — vite Function Reference

transformDynamicImport() — vite Function Reference

Architecture documentation for the transformDynamicImport() function in dynamicImportVars.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  c8ee919d_d03e_b4e1_7f6d_c4e274847312["transformDynamicImport()"]
  e962fae7_53df_5265_a6c6_b9cfe28d06e1["dynamicImportVars.ts"]
  c8ee919d_d03e_b4e1_7f6d_c4e274847312 -->|defined in| e962fae7_53df_5265_a6c6_b9cfe28d06e1
  5249d8ad_aa91_06b9_bc9a_efd575b1f133["run()"]
  5249d8ad_aa91_06b9_bc9a_efd575b1f133 -->|calls| c8ee919d_d03e_b4e1_7f6d_c4e274847312
  c10ddb4f_144e_78b3_e0f7_d70979a75e3a["dynamicImportVarsPlugin()"]
  c10ddb4f_144e_78b3_e0f7_d70979a75e3a -->|calls| c8ee919d_d03e_b4e1_7f6d_c4e274847312
  a4adb1a7_cf54_091f_eb63_8217e684a8e1["normalizePath()"]
  c8ee919d_d03e_b4e1_7f6d_c4e274847312 -->|calls| a4adb1a7_cf54_091f_eb63_8217e684a8e1
  90d02f66_c42a_35ba_8986_3c8bd82c2411["parseDynamicImportPattern()"]
  c8ee919d_d03e_b4e1_7f6d_c4e274847312 -->|calls| 90d02f66_c42a_35ba_8986_3c8bd82c2411
  style c8ee919d_d03e_b4e1_7f6d_c4e274847312 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/plugins/dynamicImportVars.ts lines 114–167

export async function transformDynamicImport(
  importSource: string,
  importer: string,
  resolve: (
    url: string,
    importer?: string,
  ) => Promise<string | undefined> | string | undefined,
  root: string,
): Promise<{
  glob: string
  pattern: string
  rawPattern: string
} | null> {
  if (importSource[1] !== '.' && importSource[1] !== '/') {
    const resolvedFileName = await resolve(importSource.slice(1, -1), importer)
    if (!resolvedFileName) {
      return null
    }
    const relativeFileName = normalizePath(
      posix.relative(
        posix.dirname(normalizePath(importer)),
        normalizePath(resolvedFileName),
      ),
    )
    importSource =
      '`' + (relativeFileName[0] === '.' ? '' : './') + relativeFileName + '`'
  }

  const dynamicImportPattern = parseDynamicImportPattern(importSource)
  if (!dynamicImportPattern) {
    return null
  }
  const { globParams, rawPattern, userPattern } = dynamicImportPattern
  const params = globParams ? `, ${JSON.stringify(globParams)}` : ''
  const dir = importer ? posix.dirname(importer) : root
  const normalized =
    rawPattern[0] === '/'
      ? posix.join(root, rawPattern.slice(1))
      : posix.join(dir, rawPattern)

  let newRawPattern = posix.relative(posix.dirname(importer), normalized)

  if (!relativePathRE.test(newRawPattern)) {
    newRawPattern = `./${newRawPattern}`
  }

  const exp = `(import.meta.glob(${JSON.stringify(userPattern)}${params}))`

  return {
    rawPattern: newRawPattern,
    pattern: userPattern,
    glob: exp,
  }
}

Domain

Subdomains

Frequently Asked Questions

What does transformDynamicImport() do?
transformDynamicImport() is a function in the vite codebase, defined in packages/vite/src/node/plugins/dynamicImportVars.ts.
Where is transformDynamicImport() defined?
transformDynamicImport() is defined in packages/vite/src/node/plugins/dynamicImportVars.ts at line 114.
What does transformDynamicImport() call?
transformDynamicImport() calls 2 function(s): normalizePath, parseDynamicImportPattern.
What calls transformDynamicImport()?
transformDynamicImport() is called by 2 function(s): dynamicImportVarsPlugin, run.

Analyze Your Own Codebase

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

Try Supermodel Free