From 2b7c4c33bc6489b80a62ae169a9256887ffaaa52 Mon Sep 17 00:00:00 2001 From: alex8088 <244096523@qq.com> Date: Thu, 9 Apr 2026 21:51:42 +0800 Subject: [PATCH] fix: use the environment api in plugins --- src/plugins/asset.ts | 8 ++++---- src/plugins/bytecode.ts | 6 ++---- src/plugins/isolateEntries.ts | 26 ++++---------------------- 3 files changed, 10 insertions(+), 30 deletions(-) diff --git a/src/plugins/asset.ts b/src/plugins/asset.ts index 8ad426a..1a92b38 100644 --- a/src/plugins/asset.ts +++ b/src/plugins/asset.ts @@ -27,7 +27,6 @@ export default async function loadWasm(file, importObject = {}) { ` export default function assetPlugin(): Plugin { - let publicDir = '' const publicAssetPathCache = new Map() const assetCache = new Map() const isImportMetaPathSupported = supportImportMetaPaths() @@ -39,9 +38,6 @@ export default function assetPlugin(): Plugin { publicAssetPathCache.clear() assetCache.clear() }, - configResolved(config): void { - publicDir = config.publicDir - }, resolveId(id): string | void { if (id === wasmHelperId) { return id @@ -57,7 +53,11 @@ export default function assetPlugin(): Plugin { } let referenceId: string + const file = cleanUrl(id) + + const { publicDir } = this.environment.config + if (publicDir && file.startsWith(publicDir)) { const hash = getHash(file) if (!publicAssetPathCache.get(hash)) { diff --git a/src/plugins/bytecode.ts b/src/plugins/bytecode.ts index 5ef80f2..569c8c4 100644 --- a/src/plugins/bytecode.ts +++ b/src/plugins/bytecode.ts @@ -2,7 +2,7 @@ import path from 'node:path' import { spawn } from 'node:child_process' import { createRequire } from 'node:module' import colors from 'picocolors' -import { type Plugin, type Logger, type LibraryOptions, type Rolldown, normalizePath } from 'vite' +import { type Plugin, type LibraryOptions, type Rolldown, normalizePath } from 'vite' import * as babel from '@babel/core' import MagicString from 'magic-string' import { getElectronPath } from '../electron' @@ -189,7 +189,6 @@ export function bytecodePlugin(options: BytecodeOptions = {}): Plugin | null { const useStrict = '"use strict";' const bytecodeModuleLoader = 'bytecode-loader.cjs' - let logger: Logger let supported = false return { @@ -200,7 +199,6 @@ export function bytecodePlugin(options: BytecodeOptions = {}): Plugin | null { if (supported) { return } - logger = config.logger const useInRenderer = config.plugins.some(p => p.name === 'vite:electron-renderer-preset-config') if (useInRenderer) { config.logger.warn(colors.yellow('bytecodePlugin does not support renderer.')) @@ -339,7 +337,7 @@ export function bytecodePlugin(options: BytecodeOptions = {}): Plugin | null { writeBundle(_, output): void { if (supported) { const bytecodeChunkCount = Object.keys(output).filter(chunk => bytecodeChunkExtensionRE.test(chunk)).length - logger.info(`${colors.green(`✓`)} ${bytecodeChunkCount} chunks compiled into bytecode.`) + this.environment.logger.info(`${colors.green(`✓`)} ${bytecodeChunkCount} chunks compiled into bytecode.`) } } } diff --git a/src/plugins/isolateEntries.ts b/src/plugins/isolateEntries.ts index 66b416c..70535d9 100644 --- a/src/plugins/isolateEntries.ts +++ b/src/plugins/isolateEntries.ts @@ -1,14 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-function-type */ import path from 'node:path' -import { - type InlineConfig, - type Plugin, - type Logger, - type LogLevel, - type Rolldown, - build as viteBuild, - mergeConfig -} from 'vite' +import { type InlineConfig, type Plugin, type LogLevel, type Rolldown, build as viteBuild, mergeConfig } from 'vite' import colors from 'picocolors' import { cleanUrl } from '../utils' @@ -22,8 +14,6 @@ const LogLevels: Record = { } export default function isolateEntriesPlugin(userConfig: InlineConfig): Plugin { - let logger: Logger - let entries: string[] | { [x: string]: string }[] let transformedCount = 0 @@ -34,10 +24,6 @@ export default function isolateEntriesPlugin(userConfig: InlineConfig): Plugin { name: 'vite:isolate-entries', apply: 'build', - configResolved(config): void { - logger = config.logger - }, - options(opts): Rolldown.InputOptions | void { const { input } = opts if (input && typeof input === 'object') { @@ -114,7 +100,7 @@ export default function isolateEntriesPlugin(userConfig: InlineConfig): Plugin { renderStart(): void { clearLine(-1) - logger.info(`${colors.green(`✓`)} ${transformedCount} modules transformed.`) + this.environment.logger.info(`${colors.green(`✓`)} ${transformedCount} modules transformed.`) }, generateBundle(_, bundle): void { @@ -161,20 +147,16 @@ function transformReporterPlugin( shouldLog = true ): Plugin<{ getTransformedCount: () => number }> { let transformedCount = 0 - let root - const log = throttle(id => { + const log = throttle((id, root) => { writeLine(`transforming (${preTransformedCount + transformedCount}) ${colors.dim(path.relative(root, id))}`) }) return { name: 'vite:transform-reporter', - configResolved(config) { - root = config.root - }, transform(_, id) { transformedCount++ if (!shouldLog) return if (id.includes('?')) return - log(id) + log(id, this.environment.config.root) }, api: { getTransformedCount() {