Skip to content

Commit d1f1aaf

Browse files
feat: support native define
Co-authored-by: IWANABETHATGUY <[email protected]>
1 parent 37e28a3 commit d1f1aaf

File tree

8 files changed

+28
-11
lines changed

8 files changed

+28
-11
lines changed

packages/vite/rollup.dts.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ const identifierReplacements: Record<string, Record<string, string>> = {
4949
rolldown: {
5050
Plugin$1: 'rolldown.Plugin',
5151
PluginContext$1: 'rolldown.PluginContext',
52+
MinimalPluginContext$1: 'rolldown.MinimalPluginContext',
5253
TransformPluginContext$1: 'rolldown.TransformPluginContext',
5354
TransformResult$2: 'rolldown.TransformResult',
5455
},

packages/vite/src/node/build.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ import { mergeConfig } from './publicUtils'
7272
import { webWorkerPostPlugin } from './plugins/worker'
7373
import { getHookHandler } from './plugins'
7474
import { BaseEnvironment } from './baseEnvironment'
75-
import type { Plugin, PluginContext } from './plugin'
75+
import type { MinimalPluginContext, Plugin, PluginContext } from './plugin'
7676
import type { RollupPluginHooks } from './typeUtils'
7777

7878
export interface BuildEnvironmentOptions {
@@ -1268,7 +1268,7 @@ function wrapEnvironmentHook<HookName extends keyof Plugin>(
12681268
}
12691269
}
12701270

1271-
function injectEnvironmentInContext<Context extends PluginContext>(
1271+
function injectEnvironmentInContext<Context extends MinimalPluginContext>(
12721272
context: Context,
12731273
environment: BuildEnvironment,
12741274
) {

packages/vite/src/node/constants.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const { version } = JSON.parse(
88
)
99

1010
export const ROLLUP_HOOKS = [
11+
'options',
1112
'buildStart',
1213
'buildEnd',
1314
'renderStart',
@@ -19,7 +20,7 @@ export const ROLLUP_HOOKS = [
1920
'footer',
2021
'augmentChunkHash',
2122
// 'outputOptions',
22-
// 'renderDynamicImport',
23+
'resolveDynamicImport',
2324
// 'resolveFileUrl',
2425
// 'resolveImportMeta',
2526
'intro',
@@ -33,6 +34,7 @@ export const ROLLUP_HOOKS = [
3334
'resolveId',
3435
// 'shouldTransformCachedModule',
3536
'transform',
37+
'onLog',
3638
] satisfies RollupPluginHooks[]
3739

3840
export const VERSION = version as string

packages/vite/src/node/plugin.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type {
44
ModuleType,
55
ObjectHook,
66
ResolveIdResult,
7+
MinimalPluginContext as RollupMinimalPluginContext,
78
Plugin as RollupPlugin,
89
PluginContext as RollupPluginContext,
910
TransformPluginContext as RollupTransformPluginContext,
@@ -68,6 +69,10 @@ export interface TransformPluginContextExtension {
6869
getCombinedSourcemap: () => SourceMap
6970
}
7071

72+
export interface MinimalPluginContext
73+
extends RollupMinimalPluginContext,
74+
PluginContextExtension {}
75+
7176
export interface PluginContext
7277
extends RollupPluginContext,
7378
PluginContextExtension {}
@@ -83,6 +88,7 @@ export interface TransformPluginContext
8388

8489
// Argument Rollup types to have the PluginContextExtension
8590
declare module 'rolldown' {
91+
export interface MinimalPluginContext extends PluginContextExtension {}
8692
export interface PluginContext extends PluginContextExtension {}
8793
export interface TransformPluginContext
8894
extends TransformPluginContextExtension {}

packages/vite/src/node/plugins/define.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { transform } from 'esbuild'
22
import { TraceMap, decodedMap, encodedMap } from '@jridgewell/trace-mapping'
3+
import type { RolldownPlugin } from 'rolldown'
34
import type { ResolvedConfig } from '../config'
4-
import type { Plugin } from '../plugin'
55
import { escapeRegex } from '../utils'
66
import type { Environment } from '../environment'
77
import { isCSSRequest } from './css'
@@ -12,7 +12,7 @@ const isNonJsRequest = (request: string): boolean => nonJsRe.test(request)
1212
const importMetaEnvMarker = '__vite_import_meta_env__'
1313
const importMetaEnvKeyReCache = new Map<string, RegExp>()
1414

15-
export function definePlugin(config: ResolvedConfig): Plugin {
15+
export function definePlugin(config: ResolvedConfig): RolldownPlugin {
1616
const isBuild = config.command === 'build'
1717
const isBuildLib = isBuild && config.build.lib
1818

@@ -111,7 +111,7 @@ export function definePlugin(config: ResolvedConfig): Plugin {
111111
return pattern
112112
}
113113

114-
return {
114+
const plugin: RolldownPlugin = {
115115
name: 'vite:define',
116116

117117
async transform(code, id) {
@@ -179,6 +179,15 @@ export function definePlugin(config: ResolvedConfig): Plugin {
179179
return result
180180
},
181181
}
182+
const enableNativePlugin = config.experimental.enableNativePlugin
183+
if (enableNativePlugin) {
184+
delete plugin.transform
185+
plugin.options = function (option) {
186+
const [define, _pattern, _importMetaEnvVal] = getPattern(this.environment)
187+
option.define = define
188+
}
189+
}
190+
return plugin
182191
}
183192

184193
export async function replaceDefine(

packages/vite/src/node/plugins/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ export async function resolvePlugins(
121121
...normalPlugins,
122122

123123
enableNativePlugin ? nativeWasmFallbackPlugin() : wasmFallbackPlugin(),
124-
// TODO: support nativedefinePlugin
125124
definePlugin(config),
126125
cssPostPlugin(config),
127126
isBuild && buildHtmlPlugin(config),

packages/vite/src/node/server/pluginContainer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ import type {
4040
FunctionPluginHooks,
4141
InputOptions,
4242
LoadResult,
43-
MinimalPluginContext,
4443
ModuleInfo,
4544
ModuleOptions,
4645
NormalizedInputOptions,
@@ -62,7 +61,7 @@ import { TraceMap, originalPositionFor } from '@jridgewell/trace-mapping'
6261
import MagicString from 'magic-string'
6362
import type { FSWatcher } from 'dep-types/chokidar'
6463
import colors from 'picocolors'
65-
import type { Plugin } from '../plugin'
64+
import type { MinimalPluginContext, Plugin } from '../plugin'
6665
import {
6766
combineSourcemaps,
6867
createDebugger,
@@ -185,6 +184,7 @@ class EnvironmentPluginContainer {
185184
warn: noop,
186185
// @ts-expect-error noop
187186
error: noop,
187+
environment,
188188
}
189189
const utils = createPluginHookUtils(plugins)
190190
this.getSortedPlugins = utils.getSortedPlugins

packages/vite/src/node/typeUtils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type {
22
ObjectHook,
3+
MinimalPluginContext as RollupMinimalPluginContext,
34
Plugin as RollupPlugin,
4-
PluginContext as RollupPluginContext,
55
} from 'rolldown'
66

77
export type NonNeverKeys<T> = {
@@ -11,7 +11,7 @@ export type NonNeverKeys<T> = {
1111
export type GetHookContextMap<Plugin> = {
1212
[K in keyof Plugin]-?: Plugin[K] extends ObjectHook<infer T, unknown>
1313
? T extends (this: infer This, ...args: any[]) => any
14-
? This extends RollupPluginContext
14+
? This extends RollupMinimalPluginContext
1515
? This
1616
: never
1717
: never

0 commit comments

Comments
 (0)