Home / File/ assetImportMetaUrl.ts — vite Source File

assetImportMetaUrl.ts — vite Source File

Architecture documentation for assetImportMetaUrl.ts, a typescript file in the vite codebase. 27 imports, 2 dependents.

File typescript PluginSystem AssetManagement 27 imports 2 dependents 3 functions

Entity Profile

Dependency Diagram

graph LR
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da["assetImportMetaUrl.ts"]
  5abb8c87_ffcb_f2d4_7421_e36705d9e5c7["plugin.ts"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> 5abb8c87_ffcb_f2d4_7421_e36705d9e5c7
  1dc2cf7d_5d97_c778_8c33_6449a7607aef["Plugin"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> 1dc2cf7d_5d97_c778_8c33_6449a7607aef
  7da774f9_eca5_d54e_6e01_6bee7d460a2b["config.ts"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> 7da774f9_eca5_d54e_6e01_6bee7d460a2b
  eb5604c2_58e1_1c00_5a1a_5d97ea5236ad["ResolvedConfig"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> eb5604c2_58e1_1c00_5a1a_5d97ea5236ad
  031bc221_67a8_c579_f2bf_bb30a08beeb2["utils.ts"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> 031bc221_67a8_c579_f2bf_bb30a08beeb2
  1948f092_e5a5_076b_2f59_79ef22dec191["injectQuery"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> 1948f092_e5a5_076b_2f59_79ef22dec191
  298b86d6_4810_9884_d5fa_3e3077e2206a["isDataUrl"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> 298b86d6_4810_9884_d5fa_3e3077e2206a
  d9d49dad_960b_4712_7c44_9345473c62e5["isParentDirectory"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> d9d49dad_960b_4712_7c44_9345473c62e5
  6841c80c_8127_d8ce_ac5d_bb48de9eee42["transformStableResult"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> 6841c80c_8127_d8ce_ac5d_bb48de9eee42
  a9bd45ce_8339_2b77_7543_41c306ebdb02["tryStatSync"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> a9bd45ce_8339_2b77_7543_41c306ebdb02
  545df65b_7f67_94d3_e2e8_a592d5e64b8f["constants.ts"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> 545df65b_7f67_94d3_e2e8_a592d5e64b8f
  abfc9e70_3c15_b3f0_a595_3cf27afb7e64["utils.ts"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> abfc9e70_3c15_b3f0_a595_3cf27afb7e64
  f094d39d_cd97_2548_86c3_38902c2f3301["slash"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> f094d39d_cd97_2548_86c3_38902c2f3301
  55b2a3d2_8787_d760_1a76_1d2854a39807["idResolver.ts"]
  08724e3d_5bec_d6ae_9e92_c1e2fe8f89da --> 55b2a3d2_8787_d760_1a76_1d2854a39807
  style 08724e3d_5bec_d6ae_9e92_c1e2fe8f89da fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import path from 'node:path'
import MagicString from 'magic-string'
import { stripLiteral } from 'strip-literal'
import { exactRegex } from 'rolldown/filter'
import type { Plugin } from '../plugin'
import type { ResolvedConfig } from '../config'
import {
  injectQuery,
  isDataUrl,
  isParentDirectory,
  transformStableResult,
  tryStatSync,
} from '../utils'
import { CLIENT_ENTRY } from '../constants'
import { slash } from '../../shared/utils'
import { createBackCompatIdResolver } from '../idResolver'
import type { ResolveIdFn } from '../idResolver'
import { fileToUrl } from './asset'
import { preloadHelperId } from './importAnalysisBuild'
import type { InternalResolveOptions } from './resolve'
import { tryFsResolve } from './resolve'
import { hasViteIgnoreRE } from './importAnalysis'

/**
 * Convert `new URL('./foo.png', import.meta.url)` to its resolved built URL
 *
 * Supports template string with dynamic segments:
 * ```
 * new URL(`./dir/${name}.png`, import.meta.url)
 * // transformed to
 * import.meta.glob('./dir/**.png', { eager: true, import: 'default' })[`./dir/${name}.png`]
 * ```
 */
export function assetImportMetaUrlPlugin(config: ResolvedConfig): Plugin {
  const { publicDir } = config
  let assetResolver: ResolveIdFn

  const fsResolveOptions: InternalResolveOptions = {
    ...config.resolve,
    root: config.root,
    isProduction: config.isProduction,
    isBuild: config.command === 'build',
    packageCache: config.packageCache,
    asSrc: true,
  }

  return {
    name: 'vite:asset-import-meta-url',

    applyToEnvironment(environment) {
      return environment.config.consumer === 'client'
    },

    transform: {
      filter: {
        id: {
          exclude: [exactRegex(preloadHelperId), exactRegex(CLIENT_ENTRY)],
        },
        code: /new\s+URL.+import\.meta\.url/s,
      },
// ... (150 more lines)

Domain

Subdomains

Frequently Asked Questions

What does assetImportMetaUrl.ts do?
assetImportMetaUrl.ts is a source file in the vite codebase, written in typescript. It belongs to the PluginSystem domain, AssetManagement subdomain.
What functions are defined in assetImportMetaUrl.ts?
assetImportMetaUrl.ts defines 3 function(s): assetImportMetaUrlPlugin, buildGlobPattern, getQueryDelimiterIndex.
What does assetImportMetaUrl.ts depend on?
assetImportMetaUrl.ts imports 27 module(s): InternalResolveOptions, Plugin, ResolveIdFn, ResolvedConfig, asset.ts, config.ts, constants.ts, createBackCompatIdResolver, and 19 more.
What files import assetImportMetaUrl.ts?
assetImportMetaUrl.ts is imported by 2 file(s): assetImportMetaUrl.spec.ts, index.ts.
Where is assetImportMetaUrl.ts in the architecture?
assetImportMetaUrl.ts is located at packages/vite/src/node/plugins/assetImportMetaUrl.ts (domain: PluginSystem, subdomain: AssetManagement, directory: packages/vite/src/node/plugins).

Analyze Your Own Codebase

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

Try Supermodel Free