Home / File/ preAlias.ts — vite Source File

preAlias.ts — vite Source File

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

File typescript PluginSystem LegacySupport 16 imports 2 dependents 5 functions

Entity Profile

Dependency Diagram

graph LR
  1ad4458e_b744_979c_c30e_c1021fdd26b7["preAlias.ts"]
  5abb8c87_ffcb_f2d4_7421_e36705d9e5c7["plugin.ts"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> 5abb8c87_ffcb_f2d4_7421_e36705d9e5c7
  1dc2cf7d_5d97_c778_8c33_6449a7607aef["Plugin"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> 1dc2cf7d_5d97_c778_8c33_6449a7607aef
  031bc221_67a8_c579_f2bf_bb30a08beeb2["utils.ts"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> 031bc221_67a8_c579_f2bf_bb30a08beeb2
  50ac7e51_9f94_e985_bfec_ae95273b23b0["isInNodeModules"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> 50ac7e51_9f94_e985_bfec_ae95273b23b0
  908e9e35_950f_ad37_ffa9_0058622aa7e8["isOptimizable"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> 908e9e35_950f_ad37_ffa9_0058622aa7e8
  26e0aa25_abdb_a755_dedb_61e78323162d["moduleListContains"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> 26e0aa25_abdb_a755_dedb_61e78323162d
  abfc9e70_3c15_b3f0_a595_3cf27afb7e64["utils.ts"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> abfc9e70_3c15_b3f0_a595_3cf27afb7e64
  10b9dea8_362c_1af2_93be_afa4dd9aed9e["cleanUrl"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> 10b9dea8_362c_1af2_93be_afa4dd9aed9e
  1a3bec7b_1a11_316f_5831_a0535b829bbf["withTrailingSlash"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> 1a3bec7b_1a11_316f_5831_a0535b829bbf
  2f328851_91ee_fb05_63f0_4f466b9d6250["index.ts"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> 2f328851_91ee_fb05_63f0_4f466b9d6250
  cf8cccc0_fa2a_e8ac_480a_47c54435825c["isDepOptimizationDisabled"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> cf8cccc0_fa2a_e8ac_480a_47c54435825c
  dcff87b0_a8ea_57a2_3b29_a7b8f19986f3["resolve.ts"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> dcff87b0_a8ea_57a2_3b29_a7b8f19986f3
  a2e55a70_b7b6_bce2_e066_aea4c516313e["tryOptimizedResolve"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> a2e55a70_b7b6_bce2_e066_aea4c516313e
  51e96894_3556_ed5c_1ede_97d449867adf["node:path"]
  1ad4458e_b744_979c_c30e_c1021fdd26b7 --> 51e96894_3556_ed5c_1ede_97d449867adf
  style 1ad4458e_b744_979c_c30e_c1021fdd26b7 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import path from 'node:path'
import fs from 'node:fs'
import type {
  Alias,
  AliasOptions,
  DepOptimizationOptions,
  DevEnvironment,
  ResolvedConfig,
} from '..'
import type { Plugin } from '../plugin'
import {
  bareImportRE,
  isInNodeModules,
  isOptimizable,
  moduleListContains,
} from '../utils'
import { cleanUrl, withTrailingSlash } from '../../shared/utils'
import { isDepOptimizationDisabled } from '../optimizer'
import { tryOptimizedResolve } from './resolve'

/**
 * A plugin to avoid an aliased AND optimized dep from being aliased in src
 */
export function preAliasPlugin(config: ResolvedConfig): Plugin {
  const findPatterns = getAliasPatterns(config.resolve.alias)
  return {
    name: 'vite:pre-alias',
    applyToEnvironment(environment) {
      return !isDepOptimizationDisabled(environment.config.optimizeDeps)
    },
    async resolveId(id, importer, options) {
      const environment = this.environment as DevEnvironment
      const ssr = environment.config.consumer === 'server'
      const depsOptimizer = environment.depsOptimizer
      if (
        importer &&
        depsOptimizer &&
        bareImportRE.test(id) &&
        !options.scan &&
        id !== '@vite/client' &&
        id !== '@vite/env'
      ) {
        if (findPatterns.find((pattern) => matches(pattern, id))) {
          const optimizedId = await tryOptimizedResolve(
            depsOptimizer,
            id,
            importer,
            config.resolve.preserveSymlinks,
            config.packageCache,
          )
          if (optimizedId) {
            return optimizedId // aliased dep already optimized
          }
          if (depsOptimizer.options.noDiscovery) {
            return
          }
          const resolved = await this.resolve(id, importer, options)
          if (resolved && !depsOptimizer.isOptimizedDepFile(resolved.id)) {
            const optimizeDeps = depsOptimizer.options
            const resolvedId = cleanUrl(resolved.id)
// ... (73 more lines)

Domain

Subdomains

Frequently Asked Questions

What does preAlias.ts do?
preAlias.ts is a source file in the vite codebase, written in typescript. It belongs to the PluginSystem domain, LegacySupport subdomain.
What functions are defined in preAlias.ts?
preAlias.ts defines 5 function(s): getAliasPatternMatcher, getAliasPatterns, matches, optimizeAliasReplacementForSSR, preAliasPlugin.
What does preAlias.ts depend on?
preAlias.ts imports 16 module(s): .., Plugin, cleanUrl, index.ts, isDepOptimizationDisabled, isInNodeModules, isOptimizable, moduleListContains, and 8 more.
What files import preAlias.ts?
preAlias.ts is imported by 2 file(s): importAnalysis.ts, index.ts.
Where is preAlias.ts in the architecture?
preAlias.ts is located at packages/vite/src/node/plugins/preAlias.ts (domain: PluginSystem, subdomain: LegacySupport, 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