perf: short-circuit bytecode detection in builds

This commit is contained in:
alex8088 2026-10-10 23:00:29 +08:00
parent 6b0f85a2a7
commit 6fc103eb5b

View File

@ -4,8 +4,9 @@ import { BytecodeCompiler } from './bytecodeCompiler'
import { BYTECODE_BUILD_PLUGIN_NAME } from './constants' import { BYTECODE_BUILD_PLUGIN_NAME } from './constants'
import { asyncFlatten } from './utils' import { asyncFlatten } from './utils'
async function useBytecode(config?: MainViteConfig | PreloadViteConfig): Promise<boolean> { async function usesBytecode(config?: MainViteConfig | PreloadViteConfig): Promise<boolean> {
if (!config) return false if (!config) return false
if (config.build?.bytecode) return true
const plugins = await asyncFlatten(config.plugins || []) const plugins = await asyncFlatten(config.plugins || [])
return plugins.some(plugin => plugin && typeof plugin === 'object' && plugin.name === 'vite:bytecode') return plugins.some(plugin => plugin && typeof plugin === 'object' && plugin.name === 'vite:bytecode')
} }
@ -29,9 +30,7 @@ export async function build(inlineConfig: InlineConfig = {}): Promise<void> {
return return
} }
const mainBytecode = await useBytecode(config.config.main) const hasBytecode = (await usesBytecode(config.config.main)) || (await usesBytecode(config.config.preload))
const preloadBytecode = await useBytecode(config.config.preload)
const hasBytecode = mainBytecode || preloadBytecode
const buildTargets = async (): Promise<void> => { const buildTargets = async (): Promise<void> => {
// Build targets in order: main -> preload -> renderer // Build targets in order: main -> preload -> renderer