define.ts — vite Source File
Architecture documentation for define.ts, a typescript file in the vite codebase. 12 imports, 4 dependents.
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
Functions
Dependencies
Imported By
Source
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