Skip to content

Commit e53210b

Browse files
committed
wip: full bundle mode compat
1 parent 5a94bd7 commit e53210b

File tree

5 files changed

+165
-154
lines changed

5 files changed

+165
-154
lines changed

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@
7171
]
7272
},
7373
"pnpm": {
74+
"overrides": {
75+
"vitest>vite": "npm:vite@^6.2.6",
76+
"vite": "https://pkg.pr.new/vitejs/rolldown-vite@107"
77+
},
7478
"packageExtensions": {
7579
"generouted": {
7680
"peerDependencies": {

packages/common/refresh-runtime.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -632,8 +632,9 @@ function predicateOnExport(ignoredExports, moduleExports, predicate) {
632632
for (const key in moduleExports) {
633633
if (key === '__esModule') continue
634634
if (ignoredExports.includes(key)) continue
635-
const desc = Object.getOwnPropertyDescriptor(moduleExports, key)
636-
if (desc && desc.get) return key
635+
// TODO: Not sure why need this. The esm module live binding always is getter, look like the browser is not.
636+
// const desc = Object.getOwnPropertyDescriptor(moduleExports, key)
637+
// if (desc && desc.get) return key
637638
if (!predicate(key, moduleExports[key])) return key
638639
}
639640
return true

packages/common/refresh-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof
8181
newCode = `${sharedHead}${newCode}
8282
8383
if (import.meta.hot && !inWebWorker) {
84-
RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => {
84+
import.meta.hot.getExports().then((currentExports) => {
8585
RefreshRuntime.registerExportsForReactRefresh(${JSON.stringify(
8686
id,
8787
)}, currentExports);

packages/plugin-react/src/index.ts

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ export default function viteReact(opts: Options = {}): PluginOption[] {
120120
| ((options: ReactBabelOptions, context: ReactBabelHookContext) => void)
121121
| undefined
122122
let staticBabelOptions: ReactBabelOptions | undefined
123-
123+
let base: string | undefined
124124
// Support patterns like:
125125
// - import * as React from 'react';
126126
// - import React from 'react';
@@ -162,6 +162,7 @@ export default function viteReact(opts: Options = {}): PluginOption[] {
162162
}
163163
},
164164
configResolved(config) {
165+
base = config.base
165166
projectRoot = config.root
166167
isProduction = config.isProduction
167168
skipFastRefresh =
@@ -361,15 +362,22 @@ export default function viteReact(opts: Options = {}): PluginOption[] {
361362
}
362363
},
363364
},
364-
transformIndexHtml(_, config) {
365-
if (!skipFastRefresh)
366-
return [
367-
{
368-
tag: 'script',
369-
attrs: { type: 'module' },
370-
children: getPreambleCode(config.server!.config.base),
371-
},
372-
]
365+
transformIndexHtml: {
366+
handler() {
367+
if (!skipFastRefresh)
368+
return [
369+
{
370+
tag: 'script',
371+
attrs: { type: 'module' },
372+
// !!! Rolldown vite full bunlde module break changes, config.server is invalid
373+
// children: getPreambleCode(config.server!.config.base),
374+
children: getPreambleCode(base!),
375+
},
376+
]
377+
},
378+
// Rolldown vite full bunlde module break changes.
379+
// Changed it to make sure the inject module could be bundled
380+
order: 'pre',
373381
},
374382
}
375383

0 commit comments

Comments
 (0)