From d90a8b198ba927bd50ba9427910ff49c6d83d07f Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Thu, 19 Sep 2024 13:53:58 +0900 Subject: [PATCH] feat: support `this.environment` in `options` and `onLog` hook --- packages/vite/src/node/build.ts | 4 ++-- packages/vite/src/node/constants.ts | 2 ++ packages/vite/src/node/plugin.ts | 7 ++++++- packages/vite/src/node/server/pluginContainer.ts | 1 + packages/vite/src/node/typeUtils.ts | 4 ++-- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/vite/src/node/build.ts b/packages/vite/src/node/build.ts index fbb4a26cffc416..65a0cb4286e267 100644 --- a/packages/vite/src/node/build.ts +++ b/packages/vite/src/node/build.ts @@ -68,7 +68,7 @@ import { mergeConfig } from './publicUtils' import { webWorkerPostPlugin } from './plugins/worker' import { getHookHandler } from './plugins' import { BaseEnvironment } from './baseEnvironment' -import type { Plugin, PluginContext } from './plugin' +import type { MinimalPluginContext, Plugin, PluginContext } from './plugin' import type { RollupPluginHooks } from './typeUtils' export interface BuildEnvironmentOptions { @@ -1253,7 +1253,7 @@ function wrapEnvironmentHook( } } -function injectEnvironmentInContext( +function injectEnvironmentInContext( context: Context, environment: BuildEnvironment, ) { diff --git a/packages/vite/src/node/constants.ts b/packages/vite/src/node/constants.ts index a547793f0239e5..088b4cb64dbc68 100644 --- a/packages/vite/src/node/constants.ts +++ b/packages/vite/src/node/constants.ts @@ -8,6 +8,7 @@ const { version } = JSON.parse( ) export const ROLLUP_HOOKS = [ + 'options', 'buildStart', 'buildEnd', 'renderStart', @@ -33,6 +34,7 @@ export const ROLLUP_HOOKS = [ 'resolveId', 'shouldTransformCachedModule', 'transform', + 'onLog', ] satisfies RollupPluginHooks[] export const VERSION = version as string diff --git a/packages/vite/src/node/plugin.ts b/packages/vite/src/node/plugin.ts index 2f85520ac34f51..9df523b8726a9b 100644 --- a/packages/vite/src/node/plugin.ts +++ b/packages/vite/src/node/plugin.ts @@ -3,6 +3,7 @@ import type { LoadResult, ObjectHook, ResolveIdResult, + MinimalPluginContext as RollupMinimalPluginContext, Plugin as RollupPlugin, PluginContext as RollupPluginContext, TransformPluginContext as RollupTransformPluginContext, @@ -61,6 +62,10 @@ export interface HotUpdatePluginContext { environment: DevEnvironment } +export interface MinimalPluginContext + extends RollupMinimalPluginContext, + PluginContextExtension {} + export interface PluginContext extends RollupPluginContext, PluginContextExtension {} @@ -75,7 +80,7 @@ export interface TransformPluginContext // Argument Rollup types to have the PluginContextExtension declare module 'rollup' { - export interface PluginContext extends PluginContextExtension {} + export interface MinimalPluginContext extends PluginContextExtension {} } /** diff --git a/packages/vite/src/node/server/pluginContainer.ts b/packages/vite/src/node/server/pluginContainer.ts index 18c7c2c82aad0e..521d95b2a3cb4d 100644 --- a/packages/vite/src/node/server/pluginContainer.ts +++ b/packages/vite/src/node/server/pluginContainer.ts @@ -185,6 +185,7 @@ class EnvironmentPluginContainer { warn: noop, // @ts-expect-error noop error: noop, + environment, } const utils = createPluginHookUtils(plugins) this.getSortedPlugins = utils.getSortedPlugins diff --git a/packages/vite/src/node/typeUtils.ts b/packages/vite/src/node/typeUtils.ts index 88667bbe965397..ece36fe9c9eb9a 100644 --- a/packages/vite/src/node/typeUtils.ts +++ b/packages/vite/src/node/typeUtils.ts @@ -1,7 +1,7 @@ import type { ObjectHook, + MinimalPluginContext as RollupMinimalPluginContext, Plugin as RollupPlugin, - PluginContext as RollupPluginContext, } from 'rollup' export type NonNeverKeys = { @@ -11,7 +11,7 @@ export type NonNeverKeys = { export type GetHookContextMap = { [K in keyof Plugin]-?: Plugin[K] extends ObjectHook ? T extends (this: infer This, ...args: any[]) => any - ? This extends RollupPluginContext + ? This extends RollupMinimalPluginContext ? This : never : never