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

Function importAnalysisPlugin

packages/vite/src/node/plugins/importAnalysis.ts:225–877  ·  view source on GitHub ↗
(config: ResolvedConfig)

Source from the content-addressed store, hash-verified

223 * ```
224 */
225export function importAnalysisPlugin(config: ResolvedConfig): Plugin {
226 const { root, base } = config
227 const clientPublicPath = path.posix.join(base, CLIENT_PUBLIC_PATH)
228 const enablePartialAccept = config.experimental.hmrPartialAccept
229 const matchAlias = getAliasPatternMatcher(config.resolve.alias)
230
231 let _env: string | undefined
232 let _ssrEnv: string | undefined
233 function getEnv(ssr: boolean) {
234 if (!_ssrEnv || !_env) {
235 const importMetaEnvKeys: Record<string, any> = {}
236 const userDefineEnv: Record<string, any> = {}
237 for (const key in config.env) {
238 importMetaEnvKeys[key] = JSON.stringify(config.env[key])
239 }
240 for (const key in config.define) {
241 // non-import.meta.env.* is handled in `clientInjection` plugin
242 if (key.startsWith('import.meta.env.')) {
243 userDefineEnv[key.slice(16)] = config.define[key]
244 }
245 }
246 const env = `import.meta.env = ${serializeDefine({
247 ...importMetaEnvKeys,
248 SSR: '__vite_ssr__',
249 ...userDefineEnv,
250 })};`
251 _ssrEnv = env.replace('__vite_ssr__', 'true')
252 _env = env.replace('__vite_ssr__', 'false')
253 }
254 return ssr ? _ssrEnv : _env
255 }
256
257 return {
258 name: 'vite:import-analysis',
259
260 applyToEnvironment(environment) {
261 return !environment.config.isBundled
262 },
263
264 async transform(source, importer) {
265 const environment = this.environment as DevEnvironment
266 const ssr = environment.config.consumer === 'server'
267 const moduleGraph = environment.moduleGraph
268
269 if (canSkipImportAnalysis(importer)) {
270 debug?.(colors.dim(`[skipped] ${prettifyUrl(importer, root)}`))
271 return null
272 }
273
274 const msAtStart = debug ? performance.now() : 0
275 await init
276 let imports!: readonly ImportSpecifier[]
277 let exports!: readonly ExportSpecifier[]
278 source = stripBomTag(source)
279 try {
280 ;[imports, exports] = parseImports(source)
281 } catch (_e: unknown) {
282 const e = _e as EsModuleLexerParseError

Callers 1

resolvePluginsFunction · 0.90

Calls 1

getAliasPatternMatcherFunction · 0.90

Tested by

no test coverage detected