Home / File/ define.ts — vite Source File

define.ts — vite Source File

Architecture documentation for define.ts, a typescript file in the vite codebase. 12 imports, 4 dependents.

File typescript PluginSystem LegacySupport 12 imports 4 dependents 6 functions

Entity Profile

Dependency Diagram

graph LR
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd["define.ts"]
  7da774f9_eca5_d54e_6e01_6bee7d460a2b["config.ts"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> 7da774f9_eca5_d54e_6e01_6bee7d460a2b
  eb5604c2_58e1_1c00_5a1a_5d97ea5236ad["ResolvedConfig"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> eb5604c2_58e1_1c00_5a1a_5d97ea5236ad
  5abb8c87_ffcb_f2d4_7421_e36705d9e5c7["plugin.ts"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> 5abb8c87_ffcb_f2d4_7421_e36705d9e5c7
  1dc2cf7d_5d97_c778_8c33_6449a7607aef["Plugin"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> 1dc2cf7d_5d97_c778_8c33_6449a7607aef
  031bc221_67a8_c579_f2bf_bb30a08beeb2["utils.ts"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> 031bc221_67a8_c579_f2bf_bb30a08beeb2
  5e378bd7_4558_94a6_54bf_d9742f54d2e9["escapeRegex"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> 5e378bd7_4558_94a6_54bf_d9742f54d2e9
  ae8703ad_85e4_a4b4_5a15_57955bb1f6ce["isCSSRequest"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> ae8703ad_85e4_a4b4_5a15_57955bb1f6ce
  0c33ff62_54e9_5c90_902b_b26728e71fca["environment.ts"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> 0c33ff62_54e9_5c90_902b_b26728e71fca
  7e6f7c83_3515_4e0d_5362_4eb9515b4a86["Environment"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> 7e6f7c83_3515_4e0d_5362_4eb9515b4a86
  f8fe0737_718a_5509_b722_473f207d5906["html.ts"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> f8fe0737_718a_5509_b722_473f207d5906
  beb5ece2_d8cc_af46_6f3f_2b3669af4c03["isHTMLRequest"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> beb5ece2_d8cc_af46_6f3f_2b3669af4c03
  8632597a_0333_2fd2_cdb3_954e50be6e8d["experimental"]
  6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd --> 8632597a_0333_2fd2_cdb3_954e50be6e8d
  bf20def2_a431_dfdf_d6e4_85c97827d9ad["define.spec.ts"]
  bf20def2_a431_dfdf_d6e4_85c97827d9ad --> 6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd
  706c7fc5_ca45_d178_75a9_66940b856450["clientInjections.ts"]
  706c7fc5_ca45_d178_75a9_66940b856450 --> 6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd
  style 6e6f4bb4_92d1_caf8_3dbc_8f1aaeb851bd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { transformSync } from 'rolldown/experimental'
import type { ResolvedConfig } from '../config'
import type { Plugin } from '../plugin'
import { escapeRegex, isCSSRequest } from '../utils'
import type { Environment } from '../environment'
import { isHTMLRequest } from './html'

const nonJsRe = /\.json(?:$|\?)/
const isNonJsRequest = (request: string): boolean => nonJsRe.test(request)
const importMetaEnvMarker = '__vite_import_meta_env__'
const importMetaEnvKeyReCache = new Map<string, RegExp>()
const escapedDotRE = /(?<!\\)\\./g

export function definePlugin(config: ResolvedConfig): Plugin {
  const isBundled = config.isBundled
  const isBuild = config.command === 'build'
  const isBuildLib = isBuild && config.build.lib

  // ignore replace process.env in lib build
  const processEnv: Record<string, string> = {}
  if (!isBuildLib) {
    const nodeEnv = process.env.NODE_ENV || config.mode
    Object.assign(processEnv, {
      'process.env': `{}`,
      'global.process.env': `{}`,
      'globalThis.process.env': `{}`,
      'process.env.NODE_ENV': JSON.stringify(nodeEnv),
      'global.process.env.NODE_ENV': JSON.stringify(nodeEnv),
      'globalThis.process.env.NODE_ENV': JSON.stringify(nodeEnv),
    })
  }

  // during dev, import.meta properties are handled by importAnalysis plugin.
  const importMetaKeys: Record<string, string> = {}
  const importMetaEnvKeys: Record<string, string> = {}
  const importMetaFallbackKeys: Record<string, string> = {}
  if (isBuild) {
    importMetaKeys['import.meta.hot'] = `undefined`
  }
  if (isBundled) {
    for (const key in config.env) {
      const val = JSON.stringify(config.env[key])
      importMetaKeys[`import.meta.env.${key}`] = val
      importMetaEnvKeys[key] = val
    }
    // these will be set to a proper value in `generatePattern`
    importMetaKeys['import.meta.env.SSR'] = `undefined`
    importMetaFallbackKeys['import.meta.env'] = `undefined`
  }

  function generatePattern(environment: Environment) {
    const keepProcessEnv = environment.config.keepProcessEnv

    const userDefine: Record<string, string> = {}
    const userDefineEnv: Record<string, any> = {}
    for (const key in environment.config.define) {
      userDefine[key] = handleDefineValue(environment.config.define[key])

      // make sure `import.meta.env` object has user define properties
      if (isBuild && key.startsWith('import.meta.env.')) {
// ... (209 more lines)

Domain

Subdomains

Frequently Asked Questions

What does define.ts do?
define.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 define.ts?
define.ts defines 6 function(s): definePlugin, getImportMetaEnvKeyRe, handleDefineValue, isNonJsRequest, replaceDefine, serializeDefine.
What does define.ts depend on?
define.ts imports 12 module(s): Environment, Plugin, ResolvedConfig, config.ts, environment.ts, escapeRegex, experimental, html.ts, and 4 more.
What files import define.ts?
define.ts is imported by 4 file(s): clientInjections.ts, define.spec.ts, importAnalysis.ts, index.ts.
Where is define.ts in the architecture?
define.ts is located at packages/vite/src/node/plugins/define.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