MCPcopy
hub / github.com/vitejs/vite / generatePattern

Function generatePattern

packages/vite/src/node/plugins/define.ts:30–101  ·  view source on GitHub ↗
(environment: Environment)

Source from the content-addressed store, hash-verified

28 }
29
30 function generatePattern(environment: Environment) {
31 const isBundled = environment.config.isBundled
32 const keepProcessEnv = environment.config.keepProcessEnv
33
34 // during dev, import.meta properties are handled by importAnalysis plugin.
35 const importMetaKeys: Record<string, string> = {}
36 const importMetaEnvKeys: Record<string, string> = {}
37 const importMetaFallbackKeys: Record<string, string> = {}
38 if (isBuild) {
39 importMetaKeys['import.meta.hot'] = `undefined`
40 }
41 if (isBundled) {
42 for (const key in config.env) {
43 const val = JSON.stringify(config.env[key])
44 importMetaKeys[`import.meta.env.${key}`] = val
45 importMetaEnvKeys[key] = val
46 }
47 // these will be set to a proper value below
48 importMetaKeys['import.meta.env.SSR'] = `undefined`
49 importMetaFallbackKeys['import.meta.env'] = `undefined`
50 }
51
52 const userDefine: Record<string, string> = {}
53 const userDefineEnv: Record<string, any> = {}
54 for (const key in environment.config.define) {
55 userDefine[key] = handleDefineValue(environment.config.define[key])
56
57 // make sure `import.meta.env` object has user define properties
58 if (isBuild && key.startsWith('import.meta.env.')) {
59 userDefineEnv[key.slice(16)] = environment.config.define[key]
60 }
61 }
62
63 const define: Record<string, string> = {
64 ...(keepProcessEnv ? {} : processEnv),
65 ...importMetaKeys,
66 ...userDefine,
67 ...importMetaFallbackKeys,
68 }
69
70 // Additional define fixes based on `ssr` value
71 const ssr = environment.config.consumer === 'server'
72
73 if ('import.meta.env.SSR' in define) {
74 define['import.meta.env.SSR'] = ssr + ''
75 }
76
77 const importMetaEnvVal = serializeDefine({
78 ...importMetaEnvKeys,
79 SSR: ssr + '',
80 ...userDefineEnv,
81 })
82
83 // Create regex pattern as a fast check before running esbuild
84 const patternKeys = Object.keys(userDefine)
85 if (!keepProcessEnv && Object.keys(processEnv).length) {
86 patternKeys.push('process.env')
87 }

Callers 1

getPatternFunction · 0.85

Calls 3

escapeRegexFunction · 0.90
handleDefineValueFunction · 0.85
serializeDefineFunction · 0.85

Tested by

no test coverage detected