From 297f7ba8919da57b94cd0d5f985460228b4fe546 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Thu, 29 Aug 2024 12:50:15 +0900 Subject: [PATCH 01/33] feat!: migrate to Vite 6 environment API (wip) --- packages/react-server/src/global.ts | 2 ++ packages/react-server/src/plugin/index.ts | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/packages/react-server/src/global.ts b/packages/react-server/src/global.ts index 4e4f6fa63..408308dd0 100644 --- a/packages/react-server/src/global.ts +++ b/packages/react-server/src/global.ts @@ -1,4 +1,5 @@ import type { ViteDevServer } from "vite"; +import type { ModuleRunner } from "vite/module-runner"; import type { PluginStateManager } from "./plugin"; import type { CallServerCallback } from "./types/react"; @@ -8,6 +9,7 @@ export const $__global: { dev: { server: ViteDevServer; reactServer: ViteDevServer; + reactServerRunner: ModuleRunner; manager: PluginStateManager; }; callServer: CallServerCallback; diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index fe8994b4b..7d11f29aa 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -11,6 +11,7 @@ import { build, createLogger, createServer, + createServerModuleRunner, mergeConfig, } from "vite"; import { crawlFrameworkPkgs } from "vitefu"; @@ -331,9 +332,13 @@ export function vitePluginReactServer( tinyassert(manager.server); const reactServer = await createServer(reactServerViteConfig); reactServer.pluginContainer.buildStart({}); + const reactServerEnv = manager.server.environments["react-server"]; + tinyassert(reactServerEnv); + const reactServerRunner = createServerModuleRunner(reactServerEnv); $__global.dev = { server: manager.server, reactServer: reactServer, + reactServerRunner, manager, }; } From 416294c76365437bb65d13af302695ec33088f0b Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Thu, 29 Aug 2024 17:53:29 +0900 Subject: [PATCH 02/33] wip: switch plugin by `applyToEnvironment` --- packages/react-server/src/entry/ssr.tsx | 4 +- .../src/features/assets/plugin.ts | 6 ++- .../src/features/client-component/plugin.ts | 4 ++ .../src/features/server-action/plugin.tsx | 2 + packages/react-server/src/global.ts | 2 +- packages/react-server/src/plugin/index.ts | 45 +++++++++++++++---- 6 files changed, 51 insertions(+), 12 deletions(-) diff --git a/packages/react-server/src/entry/ssr.tsx b/packages/react-server/src/entry/ssr.tsx index ca5cea796..1f4dfaa38 100644 --- a/packages/react-server/src/entry/ssr.tsx +++ b/packages/react-server/src/entry/ssr.tsx @@ -79,7 +79,7 @@ export async function prerender(request: Request) { export async function importReactServer(): Promise { if (import.meta.env.DEV) { - return $__global.dev.reactServer.ssrLoadModule(ENTRY_SERVER_WRAPPER) as any; + return $__global.dev.reactServerRunner.import(ENTRY_SERVER_WRAPPER); } else { return import("virtual:react-server-build" as string); } @@ -270,7 +270,7 @@ async function devInspectHandler(request: Request) { mod = await getModuleNode($__global.dev.server, data.url, true); } if (data.environment === "react-server") { - mod = await getModuleNode($__global.dev.reactServer, data.url, true); + // mod = await getModuleNode($__global.dev.reactServer, data.url, true); } const result = mod && { id: mod.id, diff --git a/packages/react-server/src/features/assets/plugin.ts b/packages/react-server/src/features/assets/plugin.ts index 3d407ec6c..c25acaa89 100644 --- a/packages/react-server/src/features/assets/plugin.ts +++ b/packages/react-server/src/features/assets/plugin.ts @@ -105,7 +105,9 @@ export function vitePluginServerAssets({ ); const styles = await Promise.all([ `/******* react-server ********/`, - collectStyle($__global.dev.reactServer, { + // @ts-ignore + // biome-ignore format: + "" && collectStyle($__global.dev.reactServer, { entries: [entryServer, "virtual:server-routes"], ssr: true, }), @@ -127,6 +129,8 @@ export function vitePluginServerAssets({ // virtual module to proxy css imports from react server to client // TODO: invalidate + full reload when add/remove css file? if (!manager.buildType) { + if (1) return "export {}"; + // @ts-ignore const urls = await collectStyleUrls($__global.dev.reactServer, { entries: [entryServer, "virtual:server-routes"], ssr: true, diff --git a/packages/react-server/src/features/client-component/plugin.ts b/packages/react-server/src/features/client-component/plugin.ts index fd52c435f..bd15ff68b 100644 --- a/packages/react-server/src/features/client-component/plugin.ts +++ b/packages/react-server/src/features/client-component/plugin.ts @@ -49,6 +49,7 @@ export function vitePluginServerUseClient({ name: "server-virtual-use-client-node-modules", enforce: "pre", // "pre" to steal Vite's node resolve apply: "serve", + applyToEnvironment: (env) => env.name === "react-server", resolveId: memoize(async function (this, source, importer) { if ( source[0] !== "." && @@ -130,6 +131,7 @@ export function vitePluginServerUseClient({ const useClientPlugin: Plugin = { name: vitePluginServerUseClient.name, + applyToEnvironment: (env) => env.name === "react-server", async transform(code, id, _options) { // when using external library's server component includes client reference, // it will end up here with deps optimization hash `?v=` resolved by server module graph. @@ -181,6 +183,7 @@ export function vitePluginServerUseClient({ name: vitePluginServerUseClient + ":strip-strip", apply: "build", enforce: "post", + applyToEnvironment: (env) => env.name === "react-server", async buildStart() { if (manager.buildType !== "scan") return; @@ -254,6 +257,7 @@ export function vitePluginClientUseClient({ const devExternalPlugin: Plugin = { name: vitePluginClientUseClient.name + ":dev-external", apply: "serve", + applyToEnvironment: (env) => env.name !== "react-server", resolveId(source, _importer, _options) { if (source.startsWith(VIRTUAL_PREFIX)) { return "\0" + source; diff --git a/packages/react-server/src/features/server-action/plugin.tsx b/packages/react-server/src/features/server-action/plugin.tsx index 999d6ab03..c79b59953 100644 --- a/packages/react-server/src/features/server-action/plugin.tsx +++ b/packages/react-server/src/features/server-action/plugin.tsx @@ -30,6 +30,7 @@ export function vitePluginClientUseServer({ }): Plugin { return { name: vitePluginClientUseServer.name, + applyToEnvironment: (env) => env.name !== "react-server", async transform(code, id, options) { if (!code.includes(USE_SERVER)) { manager.serverReferenceMap.delete(id); @@ -88,6 +89,7 @@ export function vitePluginServerUseServer({ }): PluginOption { const transformPlugin: Plugin = { name: vitePluginServerUseServer.name, + applyToEnvironment: (env) => env.name === "react-server", async transform(code, id, _options) { manager.serverReferenceMap.delete(id); if (!code.includes(USE_SERVER)) { diff --git a/packages/react-server/src/global.ts b/packages/react-server/src/global.ts index 408308dd0..e2df4e803 100644 --- a/packages/react-server/src/global.ts +++ b/packages/react-server/src/global.ts @@ -8,7 +8,7 @@ import type { CallServerCallback } from "./types/react"; export const $__global: { dev: { server: ViteDevServer; - reactServer: ViteDevServer; + // reactServer: ViteDevServer; reactServerRunner: ModuleRunner; manager: PluginStateManager; }; diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index 7d11f29aa..c72f05fa8 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -10,7 +10,6 @@ import { type ViteDevServer, build, createLogger, - createServer, createServerModuleRunner, mergeConfig, } from "vite"; @@ -157,7 +156,7 @@ export function vitePluginReactServer( }, plugins: [ ...(options?.plugins ?? []), - vitePluginSilenceDirectiveBuildWarning(), + // vitePluginSilenceDirectiveBuildWarning(), // expose server reference to react-server itself vitePluginServerUseServer({ @@ -218,9 +217,9 @@ export function vitePluginReactServer( serverAssertsPluginServer({ manager }), - serverDepsConfigPlugin(), + false && serverDepsConfigPlugin(), - { + false && { name: "inherit-parent-config", config(_config, _env) { // this is only for `import.meta.env.xxx` replacement. @@ -234,6 +233,7 @@ export function vitePluginReactServer( { name: "patch-react-server-dom-webpack", + applyToEnvironment: (env) => env.name === "react-server", transform(code, id, _options) { if (id.includes("react-server-dom-webpack")) { // rename webpack markers in react server runtime @@ -318,6 +318,36 @@ export function vitePluginReactServer( input: ENTRY_BROWSER_WRAPPER, }, }, + environments: { + "react-server": { + resolve: { + conditions: ["react-server"], + noExternal: true, + }, + dev: { + optimizeDeps: { + include: [ + "react", + "react/jsx-runtime", + "react/jsx-dev-runtime", + "react-server-dom-webpack/server.edge", + ], + }, + }, + build: { + outDir: "dist/react-server", + sourcemap: true, + ssr: true, + emitAssets: true, + manifest: true, + rollupOptions: { + input: { + index: "/src/entry-server", + }, + }, + }, + }, + }, }; }, configResolved(config) { @@ -330,14 +360,11 @@ export function vitePluginReactServer( async buildStart(_options) { if (manager.configEnv.command === "serve") { tinyassert(manager.server); - const reactServer = await createServer(reactServerViteConfig); - reactServer.pluginContainer.buildStart({}); const reactServerEnv = manager.server.environments["react-server"]; tinyassert(reactServerEnv); const reactServerRunner = createServerModuleRunner(reactServerEnv); $__global.dev = { server: manager.server, - reactServer: reactServer, reactServerRunner, manager, }; @@ -345,7 +372,7 @@ export function vitePluginReactServer( }, async buildEnd(_options) { if (manager.configEnv.command === "serve") { - await $__global.dev.reactServer.close(); + // await $__global.dev.reactServer.close(); delete ($__global as any).dev; } }, @@ -436,6 +463,8 @@ export function vitePluginReactServer( // plugins for main vite dev server (browser / ssr) return [ + // @ts-ignore + ...reactServerViteConfig.plugins?.flat(), rscParentPlugin, buildOrchestrationPlugin, vitePluginSilenceDirectiveBuildWarning(), From 7a2118d21d3e4da371bca1ce316cdafb538e3e27 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Thu, 29 Aug 2024 19:23:16 +0900 Subject: [PATCH 03/33] wip --- packages/react-server-next/src/vite/index.ts | 4 +- .../src/features/client-component/plugin.ts | 10 +++-- .../src/features/server-action/plugin.tsx | 11 +++-- packages/react-server/src/plugin/index.ts | 43 ++++++------------- packages/react-server/src/plugin/utils.tsx | 5 +++ 5 files changed, 34 insertions(+), 39 deletions(-) diff --git a/packages/react-server-next/src/vite/index.ts b/packages/react-server-next/src/vite/index.ts index 3dd871c63..ee83601d7 100644 --- a/packages/react-server-next/src/vite/index.ts +++ b/packages/react-server-next/src/vite/index.ts @@ -46,8 +46,8 @@ export default function vitePluginReactServerNext( ...options, routeDir: options?.routeDir ?? "app", plugins: [ - nextJsxPlugin(), - tsconfigPaths(), + // nextJsxPlugin(), + // tsconfigPaths(), nextOgPlugin(), vitePluginWasmModule({ buildMode: diff --git a/packages/react-server/src/features/client-component/plugin.ts b/packages/react-server/src/features/client-component/plugin.ts index bd15ff68b..9db615ab6 100644 --- a/packages/react-server/src/features/client-component/plugin.ts +++ b/packages/react-server/src/features/client-component/plugin.ts @@ -16,6 +16,8 @@ import { type CustomModuleMeta, USE_CLIENT, USE_CLIENT_RE, + applyPluginToClient, + applyPluginToServer, createVirtualPlugin, } from "../../plugin/utils"; @@ -49,7 +51,7 @@ export function vitePluginServerUseClient({ name: "server-virtual-use-client-node-modules", enforce: "pre", // "pre" to steal Vite's node resolve apply: "serve", - applyToEnvironment: (env) => env.name === "react-server", + applyToEnvironment: applyPluginToServer, resolveId: memoize(async function (this, source, importer) { if ( source[0] !== "." && @@ -131,7 +133,7 @@ export function vitePluginServerUseClient({ const useClientPlugin: Plugin = { name: vitePluginServerUseClient.name, - applyToEnvironment: (env) => env.name === "react-server", + applyToEnvironment: applyPluginToServer, async transform(code, id, _options) { // when using external library's server component includes client reference, // it will end up here with deps optimization hash `?v=` resolved by server module graph. @@ -183,7 +185,7 @@ export function vitePluginServerUseClient({ name: vitePluginServerUseClient + ":strip-strip", apply: "build", enforce: "post", - applyToEnvironment: (env) => env.name === "react-server", + applyToEnvironment: applyPluginToServer, async buildStart() { if (manager.buildType !== "scan") return; @@ -257,7 +259,7 @@ export function vitePluginClientUseClient({ const devExternalPlugin: Plugin = { name: vitePluginClientUseClient.name + ":dev-external", apply: "serve", - applyToEnvironment: (env) => env.name !== "react-server", + applyToEnvironment: applyPluginToClient, resolveId(source, _importer, _options) { if (source.startsWith(VIRTUAL_PREFIX)) { return "\0" + source; diff --git a/packages/react-server/src/features/server-action/plugin.tsx b/packages/react-server/src/features/server-action/plugin.tsx index c79b59953..76f222976 100644 --- a/packages/react-server/src/features/server-action/plugin.tsx +++ b/packages/react-server/src/features/server-action/plugin.tsx @@ -5,7 +5,12 @@ import { import { createDebug, tinyassert } from "@hiogawa/utils"; import { type Plugin, type PluginOption, parseAstAsync } from "vite"; import type { PluginStateManager } from "../../plugin"; -import { USE_SERVER, createVirtualPlugin } from "../../plugin/utils"; +import { + USE_SERVER, + applyPluginToClient, + applyPluginToServer, + createVirtualPlugin, +} from "../../plugin/utils"; const debug = createDebug("react-server:plugin:server-action"); @@ -30,7 +35,7 @@ export function vitePluginClientUseServer({ }): Plugin { return { name: vitePluginClientUseServer.name, - applyToEnvironment: (env) => env.name !== "react-server", + applyToEnvironment: applyPluginToClient, async transform(code, id, options) { if (!code.includes(USE_SERVER)) { manager.serverReferenceMap.delete(id); @@ -89,7 +94,7 @@ export function vitePluginServerUseServer({ }): PluginOption { const transformPlugin: Plugin = { name: vitePluginServerUseServer.name, - applyToEnvironment: (env) => env.name === "react-server", + applyToEnvironment: applyPluginToServer, async transform(code, id, _options) { manager.serverReferenceMap.delete(id); if (!code.includes(USE_SERVER)) { diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index c72f05fa8..50ba7d012 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -9,7 +9,6 @@ import { type ResolvedConfig, type ViteDevServer, build, - createLogger, createServerModuleRunner, mergeConfig, } from "vite"; @@ -46,6 +45,7 @@ import { $__global } from "../global"; import { ENTRY_BROWSER_WRAPPER, ENTRY_SERVER_WRAPPER, + applyPluginToServer, createVirtualPlugin, hashString, vitePluginSilenceDirectiveBuildWarning, @@ -140,20 +140,6 @@ export function vitePluginReactServer( const outDir = options?.outDir ?? "dist"; const reactServerViteConfig: InlineConfig = { - customLogger: createLogger(undefined, { - prefix: "[react-server]", - allowClearScreen: false, - }), - clearScreen: false, - configFile: false, - cacheDir: "./node_modules/.vite-rsc", - server: { - middlewareMode: true, - }, - optimizeDeps: { - noDiscovery: true, - include: [], - }, plugins: [ ...(options?.plugins ?? []), // vitePluginSilenceDirectiveBuildWarning(), @@ -233,7 +219,7 @@ export function vitePluginReactServer( { name: "patch-react-server-dom-webpack", - applyToEnvironment: (env) => env.name === "react-server", + applyToEnvironment: applyPluginToServer, transform(code, id, _options) { if (id.includes("react-server-dom-webpack")) { // rename webpack markers in react server runtime @@ -258,18 +244,6 @@ export function vitePluginReactServer( }, }, ], - build: { - ssr: true, - manifest: true, - ssrEmitAssets: true, - outDir: path.join(outDir, "rsc"), - rollupOptions: { - input: { - index: ENTRY_SERVER_WRAPPER, - }, - output: OUTPUT_SERVER_JS_EXT, - }, - }, }; const rscParentPlugin: Plugin = { @@ -335,15 +309,16 @@ export function vitePluginReactServer( }, }, build: { - outDir: "dist/react-server", + outDir: path.join(outDir, "rsc"), sourcemap: true, ssr: true, emitAssets: true, manifest: true, rollupOptions: { input: { - index: "/src/entry-server", + index: ENTRY_SERVER_WRAPPER, }, + output: OUTPUT_SERVER_JS_EXT, }, }, }, @@ -468,6 +443,14 @@ export function vitePluginReactServer( rscParentPlugin, buildOrchestrationPlugin, vitePluginSilenceDirectiveBuildWarning(), + + // + // react server + // + + // + // react client + // vitePluginClientUseServer({ manager, runtimePath: RUNTIME_BROWSER_PATH, diff --git a/packages/react-server/src/plugin/utils.tsx b/packages/react-server/src/plugin/utils.tsx index 3078592e6..3ab629984 100644 --- a/packages/react-server/src/plugin/utils.tsx +++ b/packages/react-server/src/plugin/utils.tsx @@ -1,6 +1,11 @@ import nodeCrypto from "node:crypto"; import type { Plugin, ViteDevServer } from "vite"; +export const applyPluginToServer: Plugin["applyToEnvironment"] = (env) => + env.name === "react-server"; +export const applyPluginToClient: Plugin["applyToEnvironment"] = (env) => + env.name !== "react-server"; + export function invalidateModule(server: ViteDevServer, id: string) { const mod = server.moduleGraph.getModuleById(id); if (mod) { From a2dd1c09cf68859aaa09c18b25ff41732f7e19fa Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 11:01:50 +0900 Subject: [PATCH 04/33] wip: move plugins --- .../src/features/client-component/plugin.ts | 9 +- .../src/features/server-action/plugin.tsx | 4 +- packages/react-server/src/plugin/index.ts | 202 ++++++++---------- 3 files changed, 89 insertions(+), 126 deletions(-) diff --git a/packages/react-server/src/features/client-component/plugin.ts b/packages/react-server/src/features/client-component/plugin.ts index 9db615ab6..83d8189d4 100644 --- a/packages/react-server/src/features/client-component/plugin.ts +++ b/packages/react-server/src/features/client-component/plugin.ts @@ -5,12 +5,7 @@ import { transformDirectiveProxyExport, } from "@hiogawa/transforms"; import { createDebug, memoize, tinyassert } from "@hiogawa/utils"; -import { - type Plugin, - type PluginOption, - type ViteDevServer, - parseAstAsync, -} from "vite"; +import { type Plugin, type ViteDevServer, parseAstAsync } from "vite"; import type { PluginStateManager } from "../../plugin"; import { type CustomModuleMeta, @@ -40,7 +35,7 @@ export function vitePluginServerUseClient({ }: { manager: PluginStateManager; runtimePath: string; -}): PluginOption { +}): Plugin[] { // TODO: // eventually we should try entirely virtual module approach for client reference (not only node_modules) // so that we can delegate precise resolution (e.g. `?v=` deps optimization hash, `?t=` hmr timestamp) diff --git a/packages/react-server/src/features/server-action/plugin.tsx b/packages/react-server/src/features/server-action/plugin.tsx index 76f222976..c6d8bcb97 100644 --- a/packages/react-server/src/features/server-action/plugin.tsx +++ b/packages/react-server/src/features/server-action/plugin.tsx @@ -3,7 +3,7 @@ import { transformServerActionServer, } from "@hiogawa/transforms"; import { createDebug, tinyassert } from "@hiogawa/utils"; -import { type Plugin, type PluginOption, parseAstAsync } from "vite"; +import { type Plugin, parseAstAsync } from "vite"; import type { PluginStateManager } from "../../plugin"; import { USE_SERVER, @@ -91,7 +91,7 @@ export function vitePluginServerUseServer({ }: { manager: PluginStateManager; runtimePath: string; -}): PluginOption { +}): Plugin[] { const transformPlugin: Plugin = { name: vitePluginServerUseServer.name, applyToEnvironment: applyPluginToServer, diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index 50ba7d012..7c0deea17 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -3,14 +3,12 @@ import { fileURLToPath } from "node:url"; import { createDebug, tinyassert } from "@hiogawa/utils"; import { type ConfigEnv, - type InlineConfig, type Plugin, type PluginOption, type ResolvedConfig, type ViteDevServer, build, createServerModuleRunner, - mergeConfig, } from "vite"; import { crawlFrameworkPkgs } from "vitefu"; import { CSS_LANGS_RE } from "../features/assets/css"; @@ -139,113 +137,6 @@ export function vitePluginReactServer( const routeDir = options?.routeDir ?? "src/routes"; const outDir = options?.outDir ?? "dist"; - const reactServerViteConfig: InlineConfig = { - plugins: [ - ...(options?.plugins ?? []), - // vitePluginSilenceDirectiveBuildWarning(), - - // expose server reference to react-server itself - vitePluginServerUseServer({ - manager, - runtimePath: RUNTIME_SERVER_PATH, - }), - - // transform "use client" into client referecnes - vitePluginServerUseClient({ - manager, - runtimePath: RUNTIME_SERVER_PATH, - }), - - routeManifestPluginServer({ manager, routeDir }), - - createVirtualPlugin("server-routes", () => { - return ` - const glob = import.meta.glob( - "/${routeDir}/**/(page|layout|error|not-found|loading|template|route).(js|jsx|ts|tsx|md|mdx)", - { eager: true }, - ); - export default Object.fromEntries( - Object.entries(glob).map( - ([k, v]) => [k.slice("/${routeDir}".length), v] - ) - ); - - const globMiddleware = import.meta.glob("/middleware.(js|jsx|ts|tsx)", { eager: true }); - export const middleware = Object.values(globMiddleware)[0]; - `; - }), - - createVirtualPlugin( - ENTRY_SERVER_WRAPPER.slice("virtual:".length), - () => ` - import "virtual:inject-async-local-storage"; - export { handler } from "${entryServer}"; - export { router } from "@hiogawa/react-server/entry/server"; - `, - ), - - // make `AsyncLocalStorage` available globally for React.cache from edge build - // https://github.com/facebook/react/blob/f14d7f0d2597ea25da12bcf97772e8803f2a394c/packages/react-server/src/forks/ReactFlightServerConfig.dom-edge.js#L16-L19 - createVirtualPlugin("inject-async-local-storage", () => { - if (options?.noAsyncLocalStorage) { - return "export {}"; - } - return ` - import { AsyncLocalStorage } from "node:async_hooks"; - Object.assign(globalThis, { AsyncLocalStorage }); - `; - }), - - validateImportPlugin({ - "client-only": `'client-only' is included in server build`, - "server-only": true, - }), - - serverAssertsPluginServer({ manager }), - - false && serverDepsConfigPlugin(), - - false && { - name: "inherit-parent-config", - config(_config, _env) { - // this is only for `import.meta.env.xxx` replacement. - // users need to handle .env manually to have `process.env.xxx` - // avaiable on server runtime. - return { - envPrefix: manager.config.envPrefix, - }; - }, - }, - - { - name: "patch-react-server-dom-webpack", - applyToEnvironment: applyPluginToServer, - transform(code, id, _options) { - if (id.includes("react-server-dom-webpack")) { - // rename webpack markers in react server runtime - // to avoid conflict with ssr runtime which shares same globals - code = code.replaceAll( - "__webpack_require__", - "__vite_react_server_webpack_require__", - ); - code = code.replaceAll( - "__webpack_chunk_load__", - "__vite_react_server_webpack_chunk_load__", - ); - - // make server reference async for simplicity (stale chunkCache, etc...) - // see TODO in https://github.com/facebook/react/blob/33a32441e991e126e5e874f831bd3afc237a3ecf/packages/react-server-dom-webpack/src/ReactFlightClientConfigBundlerWebpack.js#L131-L132 - code = code.replaceAll("if (isAsyncImport(metadata))", "if (true)"); - code = code.replaceAll("4 === metadata.length", "true"); - - return code; - } - return; - }, - }, - ], - }; - const rscParentPlugin: Plugin = { name: vitePluginReactServer.name, config(_config, env) { @@ -406,15 +297,15 @@ export function vitePluginReactServer( await createServerPackageJson(manager.outDir); console.log("▶▶▶ REACT SERVER BUILD (scan) [1/4]"); manager.buildType = "scan"; - await build( - mergeConfig(reactServerViteConfig, { - build: { write: false }, - } satisfies InlineConfig), - ); + // await build( + // mergeConfig(reactServerViteConfig, { + // build: { write: false }, + // } satisfies InlineConfig), + // ); console.log("▶▶▶ REACT SERVER BUILD (server) [2/4]"); manager.buildType = "server"; manager.clientReferenceMap.clear(); - await build(reactServerViteConfig); + // await build(reactServerViteConfig); console.log("▶▶▶ REACT SERVER BUILD (browser) [3/4]"); manager.buildType = "browser"; } @@ -438,8 +329,6 @@ export function vitePluginReactServer( // plugins for main vite dev server (browser / ssr) return [ - // @ts-ignore - ...reactServerViteConfig.plugins?.flat(), rscParentPlugin, buildOrchestrationPlugin, vitePluginSilenceDirectiveBuildWarning(), @@ -447,10 +336,87 @@ export function vitePluginReactServer( // // react server // + ...vitePluginServerUseServer({ + manager, + runtimePath: RUNTIME_SERVER_PATH, + }), + ...vitePluginServerUseClient({ + manager, + runtimePath: RUNTIME_SERVER_PATH, + }), + ...routeManifestPluginServer({ manager, routeDir }), + createVirtualPlugin("server-routes", () => { + return ` + const glob = import.meta.glob( + "/${routeDir}/**/(page|layout|error|not-found|loading|template|route).(js|jsx|ts|tsx|md|mdx)", + { eager: true }, + ); + export default Object.fromEntries( + Object.entries(glob).map( + ([k, v]) => [k.slice("/${routeDir}".length), v] + ) + ); + + const globMiddleware = import.meta.glob("/middleware.(js|jsx|ts|tsx)", { eager: true }); + export const middleware = Object.values(globMiddleware)[0]; + `; + }), + createVirtualPlugin( + ENTRY_SERVER_WRAPPER.slice("virtual:".length), + () => ` + import "virtual:inject-async-local-storage"; + export { handler } from "${entryServer}"; + export { router } from "@hiogawa/react-server/entry/server"; + `, + ), + // make `AsyncLocalStorage` available globally for React.cache from edge build + // https://github.com/facebook/react/blob/f14d7f0d2597ea25da12bcf97772e8803f2a394c/packages/react-server/src/forks/ReactFlightServerConfig.dom-edge.js#L16-L19 + createVirtualPlugin("inject-async-local-storage", () => { + if (options?.noAsyncLocalStorage) { + return "export {}"; + } + return ` + import { AsyncLocalStorage } from "node:async_hooks"; + Object.assign(globalThis, { AsyncLocalStorage }); + `; + }), + validateImportPlugin({ + "client-only": `'client-only' is included in server build`, + "server-only": true, + }), + ...serverAssertsPluginServer({ manager }), + serverDepsConfigPlugin(), + { + name: "patch-react-server-dom-webpack", + applyToEnvironment: applyPluginToServer, + transform(code, id, _options) { + if (id.includes("react-server-dom-webpack")) { + // rename webpack markers in react server runtime + // to avoid conflict with ssr runtime which shares same globals + code = code.replaceAll( + "__webpack_require__", + "__vite_react_server_webpack_require__", + ); + code = code.replaceAll( + "__webpack_chunk_load__", + "__vite_react_server_webpack_chunk_load__", + ); + + // make server reference async for simplicity (stale chunkCache, etc...) + // see TODO in https://github.com/facebook/react/blob/33a32441e991e126e5e874f831bd3afc237a3ecf/packages/react-server-dom-webpack/src/ReactFlightClientConfigBundlerWebpack.js#L131-L132 + code = code.replaceAll("if (isAsyncImport(metadata))", "if (true)"); + code = code.replaceAll("4 === metadata.length", "true"); + + return code; + } + return; + }, + }, // // react client // + vitePluginClientUseServer({ manager, runtimePath: RUNTIME_BROWSER_PATH, @@ -548,6 +514,8 @@ function validateImportPlugin(entries: Record): Plugin { function serverDepsConfigPlugin(): Plugin { return { name: serverDepsConfigPlugin.name, + // TODO + apply: () => false, async config(_config, env) { // crawl packages with "react" or "next" in "peerDependencies" // see https://github.com/svitejs/vitefu/blob/d8d82fa121e3b2215ba437107093c77bde51b63b/src/index.js#L95-L101 From 8d2c376bdca722ac99a3722ed1e97ef8a8916d51 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 11:18:45 +0900 Subject: [PATCH 05/33] wip: createBuilder and serverDepsConfigPlugin --- packages/react-server/src/plugin/index.ts | 63 +++++++++++------------ 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index 7c0deea17..02f081b3c 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -8,6 +8,7 @@ import { type ResolvedConfig, type ViteDevServer, build, + createBuilder, createServerModuleRunner, } from "vite"; import { crawlFrameworkPkgs } from "vitefu"; @@ -43,6 +44,7 @@ import { $__global } from "../global"; import { ENTRY_BROWSER_WRAPPER, ENTRY_SERVER_WRAPPER, + applyPluginToClient, applyPluginToServer, createVirtualPlugin, hashString, @@ -185,19 +187,9 @@ export function vitePluginReactServer( }, environments: { "react-server": { + // external and optimizeDeps are configured by `serverDepsConfigPlugin` resolve: { conditions: ["react-server"], - noExternal: true, - }, - dev: { - optimizeDeps: { - include: [ - "react", - "react/jsx-runtime", - "react/jsx-dev-runtime", - "react-server-dom-webpack/server.edge", - ], - }, }, build: { outDir: path.join(outDir, "rsc"), @@ -297,15 +289,12 @@ export function vitePluginReactServer( await createServerPackageJson(manager.outDir); console.log("▶▶▶ REACT SERVER BUILD (scan) [1/4]"); manager.buildType = "scan"; - // await build( - // mergeConfig(reactServerViteConfig, { - // build: { write: false }, - // } satisfies InlineConfig), - // ); + const builder = await createBuilder(); + await builder.build(builder.environments["react-server"]!); console.log("▶▶▶ REACT SERVER BUILD (server) [2/4]"); manager.buildType = "server"; manager.clientReferenceMap.clear(); - // await build(reactServerViteConfig); + await builder.build(builder.environments["react-server"]!); console.log("▶▶▶ REACT SERVER BUILD (browser) [3/4]"); manager.buildType = "browser"; } @@ -380,10 +369,13 @@ export function vitePluginReactServer( Object.assign(globalThis, { AsyncLocalStorage }); `; }), - validateImportPlugin({ - "client-only": `'client-only' is included in server build`, - "server-only": true, - }), + { + applyToEnvironment: applyPluginToServer, + ...validateImportPlugin({ + "client-only": `'client-only' is included in server build`, + "server-only": true, + }), + }, ...serverAssertsPluginServer({ manager }), serverDepsConfigPlugin(), { @@ -407,7 +399,7 @@ export function vitePluginReactServer( code = code.replaceAll("if (isAsyncImport(metadata))", "if (true)"); code = code.replaceAll("4 === metadata.length", "true"); - return code; + return { code, map: null }; } return; }, @@ -428,11 +420,13 @@ export function vitePluginReactServer( ...(options?.prerender ? prerenderPlugin({ manager, prerender: options.prerender }) : []), - validateImportPlugin({ - "client-only": true, - "server-only": `'server-only' is included in client build`, - }), - + { + applyToEnvironment: applyPluginToClient, + ...validateImportPlugin({ + "client-only": true, + "server-only": `'server-only' is included in client build`, + }), + }, { name: "virtual:react-server-build", resolveId(source) { @@ -514,9 +508,11 @@ function validateImportPlugin(entries: Record): Plugin { function serverDepsConfigPlugin(): Plugin { return { name: serverDepsConfigPlugin.name, - // TODO - apply: () => false, - async config(_config, env) { + async configEnvironment(name, _config, env) { + if (name !== "react-server") { + return; + } + // crawl packages with "react" or "next" in "peerDependencies" // see https://github.com/svitejs/vitefu/blob/d8d82fa121e3b2215ba437107093c77bde51b63b/src/index.js#L95-L101 const result = await crawlFrameworkPkgs({ @@ -529,10 +525,7 @@ function serverDepsConfigPlugin(): Plugin { }); return { - ssr: { - resolve: { - conditions: ["react-server"], - }, + resolve: { noExternal: [ "react", "react-dom", @@ -541,6 +534,8 @@ function serverDepsConfigPlugin(): Plugin { "client-only", ...result.ssr.noExternal, ], + }, + dev: { // pre-bundle cjs deps optimizeDeps: { include: [ From 880570c1a53f07a1296f1ca3f3ad7119996c6cc9 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sun, 22 Sep 2024 17:39:28 +0900 Subject: [PATCH 06/33] wip: nextOgPlugin resolve.alias --- packages/react-server-next/src/vite/index.ts | 78 ++++++++++++-------- packages/react-server/src/plugin/index.ts | 2 - 2 files changed, 47 insertions(+), 33 deletions(-) diff --git a/packages/react-server-next/src/vite/index.ts b/packages/react-server-next/src/vite/index.ts index ee83601d7..4fc76e019 100644 --- a/packages/react-server-next/src/vite/index.ts +++ b/packages/react-server-next/src/vite/index.ts @@ -32,10 +32,6 @@ export default function vitePluginReactServerNext( ): PluginOption { const outDir = options?.outDir ?? "dist"; const adapter = options?.adapter ?? autoSelectAdapter(); - const adapterPlugins = adapterPlugin({ - adapter, - outDir, - }); return [ react(), @@ -45,34 +41,39 @@ export default function vitePluginReactServerNext( vitePluginReactServer({ ...options, routeDir: options?.routeDir ?? "app", - plugins: [ - // nextJsxPlugin(), - // tsconfigPaths(), - nextOgPlugin(), - vitePluginWasmModule({ - buildMode: - adapter === "cloudflare" || adapter === "vercel-edge" - ? "import" - : "fs", - }), - vitePluginFetchUrlImportMetaUrl({ - buildMode: - adapter === "cloudflare" - ? "import" - : adapter === "vercel-edge" - ? "inline" - : "fs", - }), - adapterPlugins.server, - options?.plugins, - ], }), + nextOgPlugin(), + { + applyToEnvironment: (env) => env.name === "react-server", + ...vitePluginWasmModule({ + buildMode: + adapter === "cloudflare" || adapter === "vercel-edge" + ? "import" + : "fs", + }), + }, + { + applyToEnvironment: (env) => env.name === "react-server", + ...vitePluginFetchUrlImportMetaUrl({ + buildMode: + adapter === "cloudflare" + ? "import" + : adapter === "vercel-edge" + ? "inline" + : "fs", + }), + }, vitePluginLogger(), vitePluginSsrMiddleware({ entry: "next/vite/entry-ssr", preview: path.resolve(outDir, "server", "index.js"), }), - adapterPlugins.client, + Object.values( + adapterPlugin({ + adapter, + outDir, + }), + ), appFaviconPlugin(), { name: "next-exclude-optimize", @@ -98,17 +99,32 @@ function nextOgPlugin(): Plugin[] { return { resolve: { alias: { - // use only edge build and deal with following special triggers - // uniformly for any adapters via plugins - // import resvg_wasm from "./resvg.wasm?module"; - // import yoga_wasm from "./yoga.wasm?module"; - // fetch(new URL("./noto-sans-v27-latin-regular.ttf", import.meta.url)) "@vercel/og": path.resolve( require.resolve("@vercel/og/package.json"), "../dist/index.edge.js", ), }, }, + // per-environment alias actually requires an extra plugin + // so let's avoid this for now + // https://github.com/vitejs/vite/pull/17583/#issuecomment-2200115882 + // environments: { + // 'react-server': { + // resolve: { + // alias: { + // // use only edge build and deal with following special triggers + // // uniformly for any adapters via plugins + // // import resvg_wasm from "./resvg.wasm?module"; + // // import yoga_wasm from "./yoga.wasm?module"; + // // fetch(new URL("./noto-sans-v27-latin-regular.ttf", import.meta.url)) + // "@vercel/og": path.resolve( + // require.resolve("@vercel/og/package.json"), + // "../dist/index.edge.js", + // ), + // } + // } + // } + // } }; }, }, diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index 02f081b3c..cc6b94d76 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -4,7 +4,6 @@ import { createDebug, tinyassert } from "@hiogawa/utils"; import { type ConfigEnv, type Plugin, - type PluginOption, type ResolvedConfig, type ViteDevServer, build, @@ -120,7 +119,6 @@ const manager: PluginStateManager = (( ).__VITE_REACT_SERVER_MANAGER ??= new PluginStateManager()); export type ReactServerPluginOptions = { - plugins?: PluginOption[]; prerender?: PrerenderFn; entryBrowser?: string; entryServer?: string; From 5116cb59faf441ea8b65958b633f759ca459f626 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 13:18:04 +0900 Subject: [PATCH 07/33] chore: typo --- packages/react-server/src/features/assets/plugin.ts | 4 ++-- packages/react-server/src/plugin/index.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/react-server/src/features/assets/plugin.ts b/packages/react-server/src/features/assets/plugin.ts index c25acaa89..35dfb88e5 100644 --- a/packages/react-server/src/features/assets/plugin.ts +++ b/packages/react-server/src/features/assets/plugin.ts @@ -161,7 +161,7 @@ export function vitePluginServerAssets({ ]; } -export function serverAssertsPluginServer({ +export function serverAssetsPluginServer({ manager, }: { manager: PluginStateManager }): Plugin[] { // 0. track server assets during server build (this plugin) @@ -176,7 +176,7 @@ export function serverAssertsPluginServer({ return [ { - name: serverAssertsPluginServer.name + ":build", + name: serverAssetsPluginServer.name + ":build", apply: "build", generateBundle(_options, bundle) { if (manager.buildType !== "server") { diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index cc6b94d76..f7124e120 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -13,7 +13,7 @@ import { import { crawlFrameworkPkgs } from "vitefu"; import { CSS_LANGS_RE } from "../features/assets/css"; import { - serverAssertsPluginServer, + serverAssetsPluginServer, vitePluginServerAssets, } from "../features/assets/plugin"; import { SERVER_CSS_PROXY } from "../features/assets/shared"; @@ -374,7 +374,7 @@ export function vitePluginReactServer( "server-only": true, }), }, - ...serverAssertsPluginServer({ manager }), + ...serverAssetsPluginServer({ manager }), serverDepsConfigPlugin(), { name: "patch-react-server-dom-webpack", From 2f169e334c1ef8ed880f8bf2ba067c4e32c2cdf3 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 14:16:21 +0900 Subject: [PATCH 08/33] feat: export wrapServerPlugin --- packages/react-server-next/src/vite/index.ts | 13 +++--- .../examples/basic/vite.config.ts | 40 ++++++++----------- packages/react-server/src/plugin/index.ts | 18 ++++----- packages/react-server/src/plugin/utils.tsx | 16 ++++++++ 4 files changed, 46 insertions(+), 41 deletions(-) diff --git a/packages/react-server-next/src/vite/index.ts b/packages/react-server-next/src/vite/index.ts index 4fc76e019..e262a9885 100644 --- a/packages/react-server-next/src/vite/index.ts +++ b/packages/react-server-next/src/vite/index.ts @@ -4,6 +4,7 @@ import path from "node:path"; import { type ReactServerPluginOptions, vitePluginReactServer, + wrapServerPlugin, } from "@hiogawa/react-server/plugin"; import { vitePluginFetchUrlImportMetaUrl, @@ -43,18 +44,14 @@ export default function vitePluginReactServerNext( routeDir: options?.routeDir ?? "app", }), nextOgPlugin(), - { - applyToEnvironment: (env) => env.name === "react-server", - ...vitePluginWasmModule({ + wrapServerPlugin([ + vitePluginWasmModule({ buildMode: adapter === "cloudflare" || adapter === "vercel-edge" ? "import" : "fs", }), - }, - { - applyToEnvironment: (env) => env.name === "react-server", - ...vitePluginFetchUrlImportMetaUrl({ + vitePluginFetchUrlImportMetaUrl({ buildMode: adapter === "cloudflare" ? "import" @@ -62,7 +59,7 @@ export default function vitePluginReactServerNext( ? "inline" : "fs", }), - }, + ]), vitePluginLogger(), vitePluginSsrMiddleware({ entry: "next/vite/entry-ssr", diff --git a/packages/react-server/examples/basic/vite.config.ts b/packages/react-server/examples/basic/vite.config.ts index c2d2ab70b..643ce695f 100644 --- a/packages/react-server/examples/basic/vite.config.ts +++ b/packages/react-server/examples/basic/vite.config.ts @@ -1,5 +1,8 @@ import path from "node:path"; -import { vitePluginReactServer } from "@hiogawa/react-server/plugin"; +import { + vitePluginReactServer, + wrapServerPlugin, +} from "@hiogawa/react-server/plugin"; import { vitePluginErrorOverlay } from "@hiogawa/vite-plugin-error-overlay"; import { vitePluginWasmModule } from "@hiogawa/vite-plugin-server-asset"; import { @@ -25,29 +28,6 @@ export default defineConfig({ vitePluginReactServer({ entryBrowser: "/src/entry-browser", entryServer: "/src/entry-server", - plugins: [ - // TODO: for now mdx is server only. - // see https://mdxjs.com/docs/getting-started/#vite for how to setup client hmr. - mdx(), - testVitePluginVirtual(), - vitePluginWasmModule({ - buildMode: - process.env.VERCEL || process.env.CF_PAGES ? "import" : "fs", - }), - { - name: "cusotm-react-server-config", - config() { - return { - build: { - assetsInlineLimit(filePath) { - // test non-inlined server asset - return !filePath.includes("/test/assets/"); - }, - }, - }; - }, - }, - ], }), vitePluginLogger(), vitePluginSsrMiddleware({ @@ -66,9 +46,21 @@ export default defineConfig({ }, }, testVitePluginVirtual(), + wrapServerPlugin([ + // TODO: for now mdx is server only. + // see https://mdxjs.com/docs/getting-started/#vite for how to setup client hmr. + mdx(), + vitePluginWasmModule({ + buildMode: process.env.VERCEL || process.env.CF_PAGES ? "import" : "fs", + }), + ]), ], build: { ssrEmitAssets: true, + assetsInlineLimit(filePath) { + // test non-inlined server asset + return !filePath.includes("/test/assets/"); + }, }, ssr: { noExternal: [ diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index f7124e120..214ebdb58 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -43,12 +43,14 @@ import { $__global } from "../global"; import { ENTRY_BROWSER_WRAPPER, ENTRY_SERVER_WRAPPER, - applyPluginToClient, applyPluginToServer, createVirtualPlugin, hashString, vitePluginSilenceDirectiveBuildWarning, + wrapClientPlugin, + wrapServerPlugin, } from "./utils"; +export { wrapClientPlugin, wrapServerPlugin } from "./utils"; const debug = createDebug("react-server:plugin"); @@ -367,13 +369,12 @@ export function vitePluginReactServer( Object.assign(globalThis, { AsyncLocalStorage }); `; }), - { - applyToEnvironment: applyPluginToServer, - ...validateImportPlugin({ + wrapServerPlugin( + validateImportPlugin({ "client-only": `'client-only' is included in server build`, "server-only": true, }), - }, + ), ...serverAssetsPluginServer({ manager }), serverDepsConfigPlugin(), { @@ -418,13 +419,12 @@ export function vitePluginReactServer( ...(options?.prerender ? prerenderPlugin({ manager, prerender: options.prerender }) : []), - { - applyToEnvironment: applyPluginToClient, - ...validateImportPlugin({ + wrapClientPlugin( + validateImportPlugin({ "client-only": true, "server-only": `'server-only' is included in client build`, }), - }, + ), { name: "virtual:react-server-build", resolveId(source) { diff --git a/packages/react-server/src/plugin/utils.tsx b/packages/react-server/src/plugin/utils.tsx index 3ab629984..3f61bcb7c 100644 --- a/packages/react-server/src/plugin/utils.tsx +++ b/packages/react-server/src/plugin/utils.tsx @@ -6,6 +6,22 @@ export const applyPluginToServer: Plugin["applyToEnvironment"] = (env) => export const applyPluginToClient: Plugin["applyToEnvironment"] = (env) => env.name !== "react-server"; +export function wrapServerPlugin(p: T): T { + const wrap = (p: Plugin): Plugin => ({ + ...p, + applyToEnvironment: applyPluginToServer, + }); + return Array.isArray(p) ? p.map((p) => wrap(p)) : (wrap(p) as any); +} + +export function wrapClientPlugin(p: T): T { + const wrap = (p: Plugin): Plugin => ({ + ...p, + applyToEnvironment: applyPluginToServer, + }); + return Array.isArray(p) ? p.map((p) => wrap(p)) : (wrap(p) as any); +} + export function invalidateModule(server: ViteDevServer, id: string) { const mod = server.moduleGraph.getModuleById(id); if (mod) { From 38399e2e584fe5be5fc02ffbfccae7fdbc6f81a6 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 15:02:07 +0900 Subject: [PATCH 09/33] wip: vitePluginServerAssets --- .../react-server/src/features/assets/css.ts | 35 +++++++-------- .../src/features/assets/plugin.ts | 45 ++++++++++++------- packages/react-server/src/plugin/index.ts | 4 +- 3 files changed, 46 insertions(+), 38 deletions(-) diff --git a/packages/react-server/src/features/assets/css.ts b/packages/react-server/src/features/assets/css.ts index 2b68de6ef..a2c61b230 100644 --- a/packages/react-server/src/features/assets/css.ts +++ b/packages/react-server/src/features/assets/css.ts @@ -1,14 +1,17 @@ -import type { ViteDevServer } from "vite"; +import { + type DevEnvironment, + type EnvironmentModuleNode, + isCSSRequest, +} from "vite"; // cf // https://github.com/hi-ogawa/vite-plugins/blob/3c496fa1bb5ac66d2880986877a37ed262f1d2a6/packages/vite-glob-routes/examples/demo/vite-plugin-ssr-css.ts // https://github.com/remix-run/remix/blob/dev/packages/remix-dev/vite/styles.ts -export async function collectStyle( - server: ViteDevServer, - options: { entries: string[]; ssr: boolean }, +export async function transformStyleUrls( + server: DevEnvironment, + urls: string[], ) { - const urls = await collectStyleUrls(server, options); const styles = await Promise.all( urls.map(async (url) => { const res = await server.transformRequest(url + "?direct"); @@ -19,35 +22,29 @@ export async function collectStyle( } export async function collectStyleUrls( - server: ViteDevServer, - { entries, ssr }: { entries: string[]; ssr: boolean }, + server: DevEnvironment, + { entries }: { entries: string[] }, ) { - const visited = new Set(); + // const visited = new Set(); + const visited = new Set(); async function traverse(url: string) { const [, id] = await server.moduleGraph.resolveUrl(url); - if (visited.has(id)) { - return; - } - visited.add(id); const mod = server.moduleGraph.getModuleById(id); - if (!mod) { + if (!mod || visited.has(mod)) { return; } + visited.add(mod); await Promise.all( [...mod.importedModules].map((childMod) => traverse(childMod.url)), ); } // ensure import analysis is ready for top entries - await Promise.all(entries.map((e) => server.transformRequest(e, { ssr }))); + await Promise.all(entries.map((e) => server.transformRequest(e))); // traverse await Promise.all(entries.map((url) => traverse(url))); - return [...visited].filter((url) => url.match(CSS_LANGS_RE)); + return [...visited].map((mod) => mod.url).filter((url) => isCSSRequest(url)); } - -// cf. https://github.com/vitejs/vite/blob/d6bde8b03d433778aaed62afc2be0630c8131908/packages/vite/src/node/constants.ts#L49C23-L50 -export const CSS_LANGS_RE = - /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/; diff --git a/packages/react-server/src/features/assets/plugin.ts b/packages/react-server/src/features/assets/plugin.ts index 35dfb88e5..2af376297 100644 --- a/packages/react-server/src/features/assets/plugin.ts +++ b/packages/react-server/src/features/assets/plugin.ts @@ -5,7 +5,7 @@ import type { Manifest, Plugin, ViteDevServer } from "vite"; import { $__global } from "../../global"; import type { PluginStateManager } from "../../plugin"; import { ENTRY_BROWSER_WRAPPER, createVirtualPlugin } from "../../plugin/utils"; -import { collectStyle, collectStyleUrls } from "./css"; +import { collectStyleUrls, transformStyleUrls } from "./css"; import { DEV_SSR_CSS, SERVER_CSS_PROXY } from "./shared"; export interface SsrAssetsType { @@ -103,24 +103,34 @@ export function vitePluginServerAssets({ return file.startsWith(root) ? file.slice(root.length) : file; }, ); - const styles = await Promise.all([ - `/******* react-server ********/`, - // @ts-ignore - // biome-ignore format: - "" && collectStyle($__global.dev.reactServer, { + const serverStyleUrls = await collectStyleUrls( + $__global.dev.server.environments["react-server"]!, + { entries: [entryServer, "virtual:server-routes"], - ssr: true, - }), - `/******* client **************/`, - collectStyle($__global.dev.server, { + }, + ); + const clientStyleUrls = await collectStyleUrls( + $__global.dev.server.environments.client, + { entries: [ entryBrowser, "virtual:client-routes", // TODO: dev should also use RouteManifest to manage client css ...clientReferences, ], - ssr: false, - }), + }, + ); + const styles = await Promise.all([ + `/******* react-server ********/`, + await transformStyleUrls( + $__global.dev.server.environments.client, + serverStyleUrls, + ), + `/******* client **************/`, + await transformStyleUrls( + $__global.dev.server.environments.client, + clientStyleUrls, + ), ]); return styles.join("\n\n"); }), @@ -130,11 +140,12 @@ export function vitePluginServerAssets({ // TODO: invalidate + full reload when add/remove css file? if (!manager.buildType) { if (1) return "export {}"; - // @ts-ignore - const urls = await collectStyleUrls($__global.dev.reactServer, { - entries: [entryServer, "virtual:server-routes"], - ssr: true, - }); + const urls = await collectStyleUrls( + $__global.dev.server.environments["react-server"]!, + { + entries: [entryServer, "virtual:server-routes"], + }, + ); const code = urls.map((url) => `import "${url}";\n`).join(""); // ensure hmr boundary since css module doesn't have `import.meta.hot.accept` return code + `if (import.meta.hot) { import.meta.hot.accept() }`; diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index 214ebdb58..f0de009b2 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -9,9 +9,9 @@ import { build, createBuilder, createServerModuleRunner, + isCSSRequest, } from "vite"; import { crawlFrameworkPkgs } from "vitefu"; -import { CSS_LANGS_RE } from "../features/assets/css"; import { serverAssetsPluginServer, vitePluginServerAssets, @@ -273,7 +273,7 @@ export function vitePluginReactServer( // css module is not self-accepting, so we filter out // `?direct` module (used for SSR CSS) to avoid browser full reload. // (see packages/react-server/src/features/assets/css.ts) - if (CSS_LANGS_RE.test(ctx.file)) { + if (isCSSRequest(ctx.file)) { return ctx.modules.filter((m) => !m.id?.includes("?direct")); } return; From ba11eb0af5ffa6919635b411fde5229b7a792ccc Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 15:05:02 +0900 Subject: [PATCH 10/33] chore: cleanup --- packages/react-server-next/src/vite/index.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/react-server-next/src/vite/index.ts b/packages/react-server-next/src/vite/index.ts index e262a9885..7702f0c99 100644 --- a/packages/react-server-next/src/vite/index.ts +++ b/packages/react-server-next/src/vite/index.ts @@ -96,6 +96,11 @@ function nextOgPlugin(): Plugin[] { return { resolve: { alias: { + // use only edge build and deal with following special triggers + // uniformly for any adapters via plugins + // import resvg_wasm from "./resvg.wasm?module"; + // import yoga_wasm from "./yoga.wasm?module"; + // fetch(new URL("./noto-sans-v27-latin-regular.ttf", import.meta.url)) "@vercel/og": path.resolve( require.resolve("@vercel/og/package.json"), "../dist/index.edge.js", @@ -109,11 +114,6 @@ function nextOgPlugin(): Plugin[] { // 'react-server': { // resolve: { // alias: { - // // use only edge build and deal with following special triggers - // // uniformly for any adapters via plugins - // // import resvg_wasm from "./resvg.wasm?module"; - // // import yoga_wasm from "./yoga.wasm?module"; - // // fetch(new URL("./noto-sans-v27-latin-regular.ttf", import.meta.url)) // "@vercel/og": path.resolve( // require.resolve("@vercel/og/package.json"), // "../dist/index.edge.js", From 9dfb234bb2971bbec3a40afc12f5f0463f11af1b Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 15:08:57 +0900 Subject: [PATCH 11/33] fix: wrapClientPlugin --- packages/react-server/src/plugin/utils.tsx | 2 +- packages/react-server/vitest.config.e2e.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-server/src/plugin/utils.tsx b/packages/react-server/src/plugin/utils.tsx index 3f61bcb7c..cf279591b 100644 --- a/packages/react-server/src/plugin/utils.tsx +++ b/packages/react-server/src/plugin/utils.tsx @@ -17,7 +17,7 @@ export function wrapServerPlugin(p: T): T { export function wrapClientPlugin(p: T): T { const wrap = (p: Plugin): Plugin => ({ ...p, - applyToEnvironment: applyPluginToServer, + applyToEnvironment: applyPluginToClient, }); return Array.isArray(p) ? p.map((p) => wrap(p)) : (wrap(p) as any); } diff --git a/packages/react-server/vitest.config.e2e.ts b/packages/react-server/vitest.config.e2e.ts index 1a27eb9b7..b26c7829d 100644 --- a/packages/react-server/vitest.config.e2e.ts +++ b/packages/react-server/vitest.config.e2e.ts @@ -10,5 +10,6 @@ export default defineConfig({ dir: "e2e", pool: "forks", fileParallelism: false, + watch: false, }, }); From 0aa5f49d969d9e1810d27fd27780f995def322dd Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 15:15:49 +0900 Subject: [PATCH 12/33] fix: check error in routeManifestPluginServer buildEnd --- packages/react-server/src/features/router/plugin.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-server/src/features/router/plugin.ts b/packages/react-server/src/features/router/plugin.ts index a1ec1a9a0..a531be3e2 100644 --- a/packages/react-server/src/features/router/plugin.ts +++ b/packages/react-server/src/features/router/plugin.ts @@ -29,8 +29,8 @@ export function routeManifestPluginServer({ { name: "server-route-manifest", apply: "build", - async buildEnd() { - if (manager.buildType === "server") { + async buildEnd(error) { + if (!error && manager.buildType === "server") { const routeFiles = await FastGlob( path.posix.join( routeDir, From 407a57d52ec76850014ff66d7e2637bf3e7e2b9a Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 15:23:52 +0900 Subject: [PATCH 13/33] chore: fix react-swc mdx warning --- packages/react-server/examples/basic/vite.config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-server/examples/basic/vite.config.ts b/packages/react-server/examples/basic/vite.config.ts index 643ce695f..6f279a542 100644 --- a/packages/react-server/examples/basic/vite.config.ts +++ b/packages/react-server/examples/basic/vite.config.ts @@ -17,6 +17,9 @@ import { type Plugin, defineConfig } from "vite"; export default defineConfig({ clearScreen: false, plugins: [ + // TODO: for now mdx is server only. + // see https://mdxjs.com/docs/getting-started/#vite for how to setup client hmr. + mdx(), process.env["USE_SWC"] ? (await import("@vitejs/plugin-react-swc".slice())).default() : react(), @@ -47,9 +50,6 @@ export default defineConfig({ }, testVitePluginVirtual(), wrapServerPlugin([ - // TODO: for now mdx is server only. - // see https://mdxjs.com/docs/getting-started/#vite for how to setup client hmr. - mdx(), vitePluginWasmModule({ buildMode: process.env.VERCEL || process.env.CF_PAGES ? "import" : "fs", }), From e5aaee7d1c704c33e0644b4bbdbcb0a0f3d29211 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 15:24:41 +0900 Subject: [PATCH 14/33] chore: update vite in example --- packages/react-server/examples/basic/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-server/examples/basic/package.json b/packages/react-server/examples/basic/package.json index 32423a94e..8c0061c1f 100644 --- a/packages/react-server/examples/basic/package.json +++ b/packages/react-server/examples/basic/package.json @@ -51,6 +51,6 @@ "@vitejs/plugin-react": "^4.3.1", "magic-string": "^0.30.8", "unocss": "^0.58.6", - "vite": "beta" + "vite": "6.0.0-alpha.19" } } From d1e4626ec3579c6c5066d0fd42e764496f4b554d Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 15:27:55 +0900 Subject: [PATCH 15/33] chore: wrapClientPlugin for unocss --- packages/react-server/examples/basic/vite.config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-server/examples/basic/vite.config.ts b/packages/react-server/examples/basic/vite.config.ts index 6f279a542..6d07a182f 100644 --- a/packages/react-server/examples/basic/vite.config.ts +++ b/packages/react-server/examples/basic/vite.config.ts @@ -1,6 +1,7 @@ import path from "node:path"; import { vitePluginReactServer, + wrapClientPlugin, wrapServerPlugin, } from "@hiogawa/react-server/plugin"; import { vitePluginErrorOverlay } from "@hiogawa/vite-plugin-error-overlay"; @@ -23,7 +24,7 @@ export default defineConfig({ process.env["USE_SWC"] ? (await import("@vitejs/plugin-react-swc".slice())).default() : react(), - unocss(), + wrapClientPlugin(unocss()), !process.env["E2E"] && vitePluginErrorOverlay({ patchConsoleError: true, From 011f0005330269384a9c80f12ba088b9714688ae Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sun, 22 Sep 2024 17:40:43 +0900 Subject: [PATCH 16/33] wip: hotUpdate --- packages/react-server/src/plugin/index.ts | 99 +++++++++++++++-------- 1 file changed, 66 insertions(+), 33 deletions(-) diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index f0de009b2..8f2589ec2 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -239,45 +239,78 @@ export function vitePluginReactServer( manager.parentIds.add(id); } }, - async handleHotUpdate(ctx) { - tinyassert(manager.server); - - // re-render RSC with custom event - if ( - $__global.dev.reactServer.moduleGraph.getModulesByFile(ctx.file) - ?.size && - ctx.modules.every((m) => m.id && manager.shouldReloadRsc(m.id)) - ) { - manager.server.hot.send({ - type: "custom", - event: "rsc:update", - data: { - file: ctx.file, - }, - }); - - // Some rsc files are included in parent module graph - // due to postcss creating dependency from style.css to all source files. - // In this case, reload all importers (for css hmr), - // and return empty modules to avoid full-reload - if (ctx.modules.every((m) => m.id && !manager.parentIds.has(m.id))) { - for (const m of ctx.modules) { - for (const imod of m.importers) { - await manager.server.reloadModule(imod); - } - } - return []; + hotUpdate(ctx) { + // console.log("[hotUpdate]", [ + // this.environment.name, + // ctx.file, + // ctx.modules.length, + // ]); + + if (this.environment.name === "react-server") { + // client reference id is also in react server module graph, + // but we skip RSC HMR for this case to avoid conflicting with Client HMR. + if ( + ctx.modules.length > 0 && + ctx.modules.every( + (mod) => mod.id && !manager.clientReferenceMap.has(mod.id), + ) + ) { + $__global.dev.server.environments.client.hot.send({ + type: "custom", + event: "rsc:update", + data: { + file: ctx.file, + }, + }); } } - // css module is not self-accepting, so we filter out - // `?direct` module (used for SSR CSS) to avoid browser full reload. - // (see packages/react-server/src/features/assets/css.ts) - if (isCSSRequest(ctx.file)) { - return ctx.modules.filter((m) => !m.id?.includes("?direct")); + if (this.environment.name === "client") { + // css module is not self-accepting, so we filter out + // `?direct` module (used for SSR CSS) to avoid browser full reload. + // (see packages/react-server/src/features/assets/css.ts) + if (isCSSRequest(ctx.file)) { + return ctx.modules.filter((m) => !m.id?.includes("?direct")); + } } + return; }, + // async handleHotUpdate(ctx) { + // tinyassert(manager.server); + + // // re-render RSC with custom event + // if (ctx.modules.every((m) => m.id && manager.shouldReloadRsc(m.id))) { + // manager.server.hot.send({ + // type: "custom", + // event: "rsc:update", + // data: { + // file: ctx.file, + // }, + // }); + + // // Some rsc files are included in parent module graph + // // due to postcss creating dependency from style.css to all source files. + // // In this case, reload all importers (for css hmr), + // // and return empty modules to avoid full-reload + // if (ctx.modules.every((m) => m.id && !manager.parentIds.has(m.id))) { + // for (const m of ctx.modules) { + // for (const imod of m.importers) { + // await manager.server.reloadModule(imod); + // } + // } + // return []; + // } + // } + + // // css module is not self-accepting, so we filter out + // // `?direct` module (used for SSR CSS) to avoid browser full reload. + // // (see packages/react-server/src/features/assets/css.ts) + // if (isCSSRequest(ctx.file)) { + // return ctx.modules.filter((m) => !m.id?.includes("?direct")); + // } + // return; + // }, }; // orchestrate four builds from a single vite (browser) build From cbe479e45c95db4acd84682f9d4c6ecb72ff70c7 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 16:53:58 +0900 Subject: [PATCH 17/33] fix: vitePluginServerAssets --- packages/react-server/src/features/assets/plugin.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/react-server/src/features/assets/plugin.ts b/packages/react-server/src/features/assets/plugin.ts index 2af376297..86bbacdda 100644 --- a/packages/react-server/src/features/assets/plugin.ts +++ b/packages/react-server/src/features/assets/plugin.ts @@ -139,7 +139,6 @@ export function vitePluginServerAssets({ // virtual module to proxy css imports from react server to client // TODO: invalidate + full reload when add/remove css file? if (!manager.buildType) { - if (1) return "export {}"; const urls = await collectStyleUrls( $__global.dev.server.environments["react-server"]!, { From 9189c29e9a0a24c6218793f10a39f4ad1e757052 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 16:58:20 +0900 Subject: [PATCH 18/33] chore: cleanup --- packages/react-server/src/plugin/index.ts | 41 ----------------------- 1 file changed, 41 deletions(-) diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index 8f2589ec2..17bc63ce9 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -240,12 +240,6 @@ export function vitePluginReactServer( } }, hotUpdate(ctx) { - // console.log("[hotUpdate]", [ - // this.environment.name, - // ctx.file, - // ctx.modules.length, - // ]); - if (this.environment.name === "react-server") { // client reference id is also in react server module graph, // but we skip RSC HMR for this case to avoid conflicting with Client HMR. @@ -276,41 +270,6 @@ export function vitePluginReactServer( return; }, - // async handleHotUpdate(ctx) { - // tinyassert(manager.server); - - // // re-render RSC with custom event - // if (ctx.modules.every((m) => m.id && manager.shouldReloadRsc(m.id))) { - // manager.server.hot.send({ - // type: "custom", - // event: "rsc:update", - // data: { - // file: ctx.file, - // }, - // }); - - // // Some rsc files are included in parent module graph - // // due to postcss creating dependency from style.css to all source files. - // // In this case, reload all importers (for css hmr), - // // and return empty modules to avoid full-reload - // if (ctx.modules.every((m) => m.id && !manager.parentIds.has(m.id))) { - // for (const m of ctx.modules) { - // for (const imod of m.importers) { - // await manager.server.reloadModule(imod); - // } - // } - // return []; - // } - // } - - // // css module is not self-accepting, so we filter out - // // `?direct` module (used for SSR CSS) to avoid browser full reload. - // // (see packages/react-server/src/features/assets/css.ts) - // if (isCSSRequest(ctx.file)) { - // return ctx.modules.filter((m) => !m.id?.includes("?direct")); - // } - // return; - // }, }; // orchestrate four builds from a single vite (browser) build From f56e08b58dccb3ec0d82f5602a283747ecbba596 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 17:23:42 +0900 Subject: [PATCH 19/33] fix: sort `resolve.noExternal` for stable getConfigHash --- packages/react-server/src/plugin/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index 17bc63ce9..8f065e473 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -1,6 +1,6 @@ import path from "node:path"; import { fileURLToPath } from "node:url"; -import { createDebug, tinyassert } from "@hiogawa/utils"; +import { createDebug, tinyassert, uniq } from "@hiogawa/utils"; import { type ConfigEnv, type Plugin, @@ -516,14 +516,14 @@ function serverDepsConfigPlugin(): Plugin { return { resolve: { - noExternal: [ + noExternal: uniq([ "react", "react-dom", "react-server-dom-webpack", "server-only", "client-only", ...result.ssr.noExternal, - ], + ]).sort(), }, dev: { // pre-bundle cjs deps From f5706659acdb087fa92f8697b305abe9399e9abb Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 17:30:32 +0900 Subject: [PATCH 20/33] chore: vite alpha in examples/basic --- packages/react-server/examples/basic/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-server/examples/basic/package.json b/packages/react-server/examples/basic/package.json index 8c0061c1f..7322d082a 100644 --- a/packages/react-server/examples/basic/package.json +++ b/packages/react-server/examples/basic/package.json @@ -51,6 +51,6 @@ "@vitejs/plugin-react": "^4.3.1", "magic-string": "^0.30.8", "unocss": "^0.58.6", - "vite": "6.0.0-alpha.19" + "vite": "alpha" } } From dce137ddc0119bebaf2947f4130c71fe46e55f9a Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 18:42:52 +0900 Subject: [PATCH 21/33] fix: fix rsc hmr with postcss --- packages/react-server/src/plugin/index.ts | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index 8f065e473..470cc6352 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -230,7 +230,6 @@ export function vitePluginReactServer( }, async buildEnd(_options) { if (manager.configEnv.command === "serve") { - // await $__global.dev.reactServer.close(); delete ($__global as any).dev; } }, @@ -239,7 +238,14 @@ export function vitePluginReactServer( manager.parentIds.add(id); } }, - hotUpdate(ctx) { + async hotUpdate(ctx) { + // console.log("[hotUpdate]", [ + // this.environment.name, + // ctx.file, + // // ctx.modules, + // // ctx.modules.flatMap(m => [...m.importers]), + // ]); + if (this.environment.name === "react-server") { // client reference id is also in react server module graph, // but we skip RSC HMR for this case to avoid conflicting with Client HMR. @@ -266,6 +272,18 @@ export function vitePluginReactServer( if (isCSSRequest(ctx.file)) { return ctx.modules.filter((m) => !m.id?.includes("?direct")); } + + // Server files can be included in client module graph + // due to postcss creating dependencies from style.css to all source files. + // In this case, reload all importers (for css hmr), + // and return empty modules to avoid full-reload + const importers = ctx.modules.flatMap((m) => [...m.importers]); + if (importers.every((m) => m.id && isCSSRequest(m.id))) { + for (const m of importers) { + await $__global.dev.server.reloadEnvironmentModule(m); + } + return []; + } } return; From 88a9cbc4eaa61b28cd2b5e428b3fc007de9a86c7 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 18:46:21 +0900 Subject: [PATCH 22/33] chore(deps): vite 6.0.0-alpha.23 --- packages/react-server/src/features/assets/css.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/react-server/src/features/assets/css.ts b/packages/react-server/src/features/assets/css.ts index a2c61b230..01b768079 100644 --- a/packages/react-server/src/features/assets/css.ts +++ b/packages/react-server/src/features/assets/css.ts @@ -25,7 +25,6 @@ export async function collectStyleUrls( server: DevEnvironment, { entries }: { entries: string[] }, ) { - // const visited = new Set(); const visited = new Set(); async function traverse(url: string) { From 06c7728b31f1caca9d40462c92bedde9f04d536d Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 18:50:58 +0900 Subject: [PATCH 23/33] Revert "chore(deps): vite 6.0.0-alpha.23" This reverts commit 6698ab394e023370d995d7127c14c13fe9a09879. --- package.json | 5 +- .../react-server/src/features/assets/css.ts | 1 + patches/vite@6.0.0-alpha.22.patch | 40 +++ pnpm-lock.yaml | 312 ++++++++++++------ 4 files changed, 259 insertions(+), 99 deletions(-) create mode 100644 patches/vite@6.0.0-alpha.22.patch diff --git a/package.json b/package.json index 01e003a05..727285821 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "tsup": "^8.1.0", "tsx": "^4.16.2", "typescript": "^5.5.4", - "vite": "6.0.0-beta.1", + "vite": "6.0.0-alpha.22", "vitest": "^2.0.1", "wrangler": "^3.76.0" }, @@ -46,6 +46,9 @@ "react-server-dom-webpack": "$react-server-dom-webpack", "@types/react": "$@types/react", "@types/react-dom": "$@types/react-dom" + }, + "patchedDependencies": { + "vite@6.0.0-alpha.22": "patches/vite@6.0.0-alpha.22.patch" } } } diff --git a/packages/react-server/src/features/assets/css.ts b/packages/react-server/src/features/assets/css.ts index 01b768079..a2c61b230 100644 --- a/packages/react-server/src/features/assets/css.ts +++ b/packages/react-server/src/features/assets/css.ts @@ -25,6 +25,7 @@ export async function collectStyleUrls( server: DevEnvironment, { entries }: { entries: string[] }, ) { + // const visited = new Set(); const visited = new Set(); async function traverse(url: string) { diff --git a/patches/vite@6.0.0-alpha.22.patch b/patches/vite@6.0.0-alpha.22.patch new file mode 100644 index 000000000..5a92acec3 --- /dev/null +++ b/patches/vite@6.0.0-alpha.22.patch @@ -0,0 +1,40 @@ +diff --git a/dist/node/index.d.ts b/dist/node/index.d.ts +index c2c1bdae45811860c366cc38b24231fd9fd72596..af378a7eb752718107d3974c5e426456c988e0d8 100644 +--- a/dist/node/index.d.ts ++++ b/dist/node/index.d.ts +@@ -1062,7 +1062,7 @@ declare class EnvironmentModuleGraph { + getModulesByFile(file: string): Set | undefined; + onFileChange(file: string): void; + onFileDelete(file: string): void; +- invalidateModule(mod: EnvironmentModuleNode, seen?: Set, timestamp?: number, isHmr?: boolean, ++ invalidateModule(mod: EnvironmentModuleNode, seen?: Set, timestamp?: number, isHmr?: boolean, + ): void; + invalidateAll(): void; + /** +@@ -1073,7 +1073,7 @@ declare class EnvironmentModuleGraph { + * @param staticImportedUrls Subset of `importedModules` where they're statically imported in code. + * This is only used for soft invalidations so `undefined` is fine but may cause more runtime processing. + */ +- updateModuleInfo(mod: EnvironmentModuleNode, importedModules: Set, importedBindings: Map> | null, acceptedModules: Set, acceptedExports: Set | null, isSelfAccepting: boolean, ++ updateModuleInfo(mod: EnvironmentModuleNode, importedModules: Set, importedBindings: Map> | null, acceptedModules: Set, acceptedExports: Set | null, isSelfAccepting: boolean, + ): Promise | undefined>; + ensureEntryFromUrl(rawUrl: string, setIsSelfAccepting?: boolean): Promise; + createFileOnlyEntry(file: string): EnvironmentModuleNode; +@@ -1140,7 +1140,7 @@ declare class ModuleGraph { + getModulesByFile(file: string): Set | undefined; + onFileChange(file: string): void; + onFileDelete(file: string): void; +- invalidateModule(mod: ModuleNode, seen?: Set, timestamp?: number, isHmr?: boolean, ++ invalidateModule(mod: ModuleNode, seen?: Set, timestamp?: number, isHmr?: boolean, + ): void; + invalidateAll(): void; + ensureEntryFromUrl(rawUrl: string, ssr?: boolean, setIsSelfAccepting?: boolean): Promise; +@@ -2886,7 +2886,7 @@ interface ViteDevServer { + /** + * Module execution environments attached to the Vite server. + */ +- environments: Record<'client' | 'ssr' | (string & Record), DevEnvironment>; ++ environments: Record<'client' | 'ssr' | (string & {}), DevEnvironment>; + /** + * Module graph that tracks the import relationships, url to file mapping + * and hmr state. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c14826afd..ba22ce5c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - vite: 6.0.0-beta.1 + vite: 6.0.0-alpha.22 react: 19.0.0-rc-eb3ad065-20240822 react-dom: 19.0.0-rc-eb3ad065-20240822 react-is: 19.0.0-rc-eb3ad065-20240822 @@ -13,6 +13,11 @@ overrides: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 +patchedDependencies: + vite@6.0.0-alpha.22: + hash: joa2scchvfwbqcietvmp2gzuq4 + path: patches/vite@6.0.0-alpha.22.patch + importers: .: @@ -40,10 +45,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) '@vitejs/plugin-react-swc': specifier: ^3.7.0 - version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) esbuild: specifier: ^0.23.0 version: 0.23.0 @@ -69,8 +74,8 @@ importers: specifier: ^5.5.4 version: 5.5.4 vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) vitest: specifier: ^2.0.1 version: 2.0.1(@types/node@20.14.10)(terser@5.31.2) @@ -81,8 +86,8 @@ importers: packages/error-overlay: dependencies: vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/error-overlay/examples/basic: dependencies: @@ -99,8 +104,8 @@ importers: specifier: ^0.30.8 version: 0.30.10 vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) devDependencies: esbuild: specifier: ^0.21.5 @@ -125,8 +130,8 @@ importers: specifier: latest version: link:../.. vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/react-server: dependencies: @@ -149,11 +154,11 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822)(webpack@5.93.0(@swc/core@1.6.13(@swc/helpers@0.5.12))(esbuild@0.23.0)) vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) vitefu: specifier: ^0.2.5 - version: 0.2.5(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 0.2.5(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) devDependencies: '@edge-runtime/cookies': specifier: ^5.0.0 @@ -178,7 +183,7 @@ importers: version: 0.6.2 '@vitejs/plugin-react-swc': specifier: ^3.7.0 - version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) esbuild: specifier: ^0.20.2 version: 0.20.2 @@ -192,11 +197,11 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.4)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.2(typescript@5.5.4)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) devDependencies: '@hiogawa/react-server': specifier: workspace:* @@ -246,7 +251,7 @@ importers: devDependencies: '@hiogawa/unocss-preset-antd': specifier: 2.2.1-pre.7 - version: 2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))) + version: 2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))) '@hiogawa/utils': specifier: latest version: 1.7.0 @@ -282,16 +287,16 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) magic-string: specifier: ^0.30.8 version: 0.30.10 unocss: specifier: ^0.58.6 - version: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/cloudflare: dependencies: @@ -321,8 +326,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/custom-out-dir: dependencies: @@ -352,8 +357,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/minimal: dependencies: @@ -380,8 +385,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/next: dependencies: @@ -411,8 +416,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/postcss-tailwind: dependencies: @@ -442,8 +447,8 @@ importers: specifier: ^3.4.10 version: 3.4.10 vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/prerender: dependencies: @@ -477,10 +482,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: latest - version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/starter: dependencies: @@ -511,10 +516,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/server-asset: dependencies: @@ -522,14 +527,14 @@ importers: specifier: ^0.30.8 version: 0.30.10 vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/ssr-css: dependencies: vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/transforms: dependencies: @@ -550,8 +555,8 @@ importers: packages/vite-glob-routes: dependencies: vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) devDependencies: '@hattip/compose': specifier: ^0.0.44 @@ -684,7 +689,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) react: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822 @@ -695,8 +700,8 @@ importers: specifier: ^6.22.3 version: 6.22.3(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/vite-glob-routes/examples/ssr: devDependencies: @@ -732,7 +737,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) esbuild: specifier: ^0.20.2 version: 0.20.2 @@ -749,20 +754,20 @@ importers: specifier: ^6.22.3 version: 6.22.3(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/vite-import-dev-server: dependencies: vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare: dependencies: vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) devDependencies: '@cloudflare/workers-types': specifier: ^4.20240821.1 @@ -781,7 +786,7 @@ importers: dependencies: '@hiogawa/tiny-react': specifier: 0.0.2-pre.9 - version: 0.0.2-pre.9(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 0.0.2-pre.9(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) '@hiogawa/vite-node-miniflare': specifier: latest version: link:../.. @@ -792,8 +797,8 @@ importers: specifier: ^3.20240821.2 version: 3.20240821.2 vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare/examples/react: dependencies: @@ -808,7 +813,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) miniflare: specifier: ^3.20240821.2 version: 3.20240821.2 @@ -819,8 +824,8 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare/examples/react-router: dependencies: @@ -844,7 +849,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) miniflare: specifier: ^3.20240821.2 version: 3.20240821.2 @@ -858,8 +863,8 @@ importers: specifier: ^6.22.3 version: 6.22.3(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare/examples/remix: dependencies: @@ -887,7 +892,7 @@ importers: version: link:../.. '@remix-run/dev': specifier: 2.8.1 - version: 2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0)) + version: 2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0)) '@types/react': specifier: 18.3.3 version: 18.3.3 @@ -904,8 +909,8 @@ importers: specifier: ^1.4.1 version: 1.5.4 vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/vite-plugin-simple-hmr: dependencies: @@ -913,8 +918,8 @@ importers: specifier: ^0.30.8 version: 0.30.10 vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) devDependencies: '@types/estree': specifier: ^1.0.5 @@ -932,8 +937,8 @@ importers: packages/vite-plugin-ssr-middleware: dependencies: vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages/vite-plugin-ssr-middleware/examples/react: dependencies: @@ -948,7 +953,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) react: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822 @@ -956,8 +961,8 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-beta.1 - version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.22 + version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) packages: @@ -1997,7 +2002,7 @@ packages: '@hiogawa/theme-script@0.0.4-pre.3': resolution: {integrity: sha512-2uxVhemdAMUFE/OaUcaTT2QeZsXnxtnF/CLNs+CcrlgwaUXXfsnXUTvUZCz8MTmxzzz4Vp5hfAyi4pp58XHJCQ==} peerDependencies: - vite: 6.0.0-beta.1 + vite: 6.0.0-alpha.22 peerDependenciesMeta: vite: optional: true @@ -2028,7 +2033,7 @@ packages: '@hiogawa/tiny-react@0.0.2-pre.9': resolution: {integrity: sha512-q5zIFwmJMMLbq4g0e/2/AKaggjsOl0dQ6fAiG7k/PjOdj3/xWJvcxr7oCOzybEuxR7oNIOgsBhydBqZPRQ+BLQ==} peerDependencies: - vite: 6.0.0-beta.1 + vite: 6.0.0-alpha.22 peerDependenciesMeta: vite: optional: true @@ -2163,7 +2168,7 @@ packages: peerDependencies: '@remix-run/serve': ^2.8.1 typescript: ^5.1.0 - vite: 6.0.0-beta.1 + vite: 6.0.0-alpha.22 wrangler: ^3.28.2 peerDependenciesMeta: '@remix-run/serve': @@ -2631,7 +2636,7 @@ packages: '@unocss/astro@0.58.6': resolution: {integrity: sha512-0BvbhEp5Ln6wFNnhISusB2hcfycWkdgnjlFMcLT69efvj4G39MzB6JYT/1qiidLfpj35HcqkpBz7TfZ4bUmOAw==} peerDependencies: - vite: 6.0.0-beta.1 + vite: 6.0.0-alpha.22 peerDependenciesMeta: vite: optional: true @@ -2712,7 +2717,7 @@ packages: '@unocss/vite@0.58.6': resolution: {integrity: sha512-DPXCoYU/Ozqc/Jeptd41XvtW8MSgVxmtTyhpMAsm/hJuBfwIV7Fy3TZquf4V9BpaTb4ao1LVXzgXmVUmj2HXpA==} peerDependencies: - vite: 6.0.0-beta.1 + vite: 6.0.0-alpha.22 '@vanilla-extract/babel-plugin-debug-ids@1.0.5': resolution: {integrity: sha512-Rc9A6ylsw7EBErmpgqCMvc/Z/eEZxI5k1xfLQHw7f5HHh3oc5YfzsAsYU/PdmSNjF1dp3sGEViBdDltvwnfVaA==} @@ -2733,13 +2738,13 @@ packages: '@vitejs/plugin-react-swc@3.7.0': resolution: {integrity: sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==} peerDependencies: - vite: 6.0.0-beta.1 + vite: 6.0.0-alpha.22 '@vitejs/plugin-react@4.3.1': resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: 6.0.0-beta.1 + vite: 6.0.0-alpha.22 '@vitest/expect@2.0.1': resolution: {integrity: sha512-yw70WL3ZwzbI2O3MOXYP2Shf4vqVkS3q5FckLJ6lhT9VMMtDyWdofD53COZcoeuHwsBymdOZp99r5bOr5g+oeA==} @@ -5358,7 +5363,7 @@ packages: engines: {node: '>=14'} peerDependencies: '@unocss/webpack': 0.58.6 - vite: 6.0.0-beta.1 + vite: 6.0.0-alpha.22 peerDependenciesMeta: '@unocss/webpack': optional: true @@ -5437,11 +5442,42 @@ packages: vite-tsconfig-paths@4.3.2: resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} peerDependencies: - vite: 6.0.0-beta.1 + vite: 6.0.0-alpha.22 peerDependenciesMeta: vite: optional: true + vite@6.0.0-alpha.22: + resolution: {integrity: sha512-jPMZfRviR+ObfIJhMxauT3ac1qujuW1fj0qMVllQ32eCKO8f6mOmJgxjwpAKskja8nsZMc8nFwWypLJBIfn2Kg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + vite@6.0.0-beta.1: resolution: {integrity: sha512-E22XKY2pvL12/sJV4oEtoOnMC6HPaC3HmSBFAjwWontAtbf0Oj2eK3sYgg3ggWvfNx1PlKDdOccxMD4wXGKwPQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -5476,7 +5512,7 @@ packages: vitefu@0.2.5: resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: - vite: 6.0.0-beta.1 + vite: 6.0.0-alpha.22 peerDependenciesMeta: vite: optional: true @@ -6372,9 +6408,9 @@ snapshots: optionalDependencies: react: 19.0.0-rc-eb3ad065-20240822 - '@hiogawa/tiny-react@0.0.2-pre.9(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))': + '@hiogawa/tiny-react@0.0.2-pre.9(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))': optionalDependencies: - vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) '@hiogawa/tiny-rpc@0.2.3-pre.18': {} @@ -6382,6 +6418,10 @@ snapshots: optionalDependencies: react: 19.0.0-rc-eb3ad065-20240822 + '@hiogawa/unocss-preset-antd@2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)))': + dependencies: + unocss: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + '@hiogawa/unocss-preset-antd@2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)))': dependencies: unocss: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) @@ -6568,7 +6608,7 @@ snapshots: '@polka/url@1.0.0-next.25': {} - '@remix-run/dev@2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0))': + '@remix-run/dev@2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0))': dependencies: '@babel/core': 7.24.7 '@babel/generator': 7.24.7 @@ -6625,7 +6665,7 @@ snapshots: ws: 7.5.9 optionalDependencies: typescript: 5.5.4 - vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) wrangler: 3.76.0(@cloudflare/workers-types@4.20240909.0) transitivePeerDependencies: - '@types/node' @@ -7042,6 +7082,16 @@ snapshots: '@ungap/structured-clone@1.2.0': {} + '@unocss/astro@0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))': + dependencies: + '@unocss/core': 0.58.6 + '@unocss/reset': 0.58.6 + '@unocss/vite': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + optionalDependencies: + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + transitivePeerDependencies: + - rollup + '@unocss/astro@0.58.6(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@unocss/core': 0.58.6 @@ -7179,6 +7229,22 @@ snapshots: dependencies: '@unocss/core': 0.58.6 + '@unocss/vite@0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@unocss/config': 0.58.6 + '@unocss/core': 0.58.6 + '@unocss/inspector': 0.58.6 + '@unocss/scope': 0.58.6 + '@unocss/transformer-directives': 0.58.6 + chokidar: 3.6.0 + fast-glob: 3.3.2 + magic-string: 0.30.10 + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + transitivePeerDependencies: + - rollup + '@unocss/vite@0.58.6(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@ampproject/remapping': 2.3.0 @@ -7228,7 +7294,7 @@ snapshots: lodash: 4.17.21 mlly: 1.6.1 outdent: 0.8.0 - vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) vite-node: 1.4.0(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@types/node' @@ -7249,13 +7315,24 @@ snapshots: satori: 0.10.9 yoga-wasm-web: 0.3.3 - '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))': + '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@swc/core': 1.6.13(@swc/helpers@0.5.12) - vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@swc/helpers' + '@vitejs/plugin-react@4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))': + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + transitivePeerDependencies: + - supports-color + '@vitejs/plugin-react@4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@babel/core': 7.24.7 @@ -10506,6 +10583,35 @@ snapshots: universalify@2.0.1: {} + unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)): + dependencies: + '@unocss/astro': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + '@unocss/cli': 0.58.6(rollup@4.21.2) + '@unocss/core': 0.58.6 + '@unocss/extractor-arbitrary-variants': 0.58.6 + '@unocss/postcss': 0.58.6(postcss@8.4.45) + '@unocss/preset-attributify': 0.58.6 + '@unocss/preset-icons': 0.58.6 + '@unocss/preset-mini': 0.58.6 + '@unocss/preset-tagify': 0.58.6 + '@unocss/preset-typography': 0.58.6 + '@unocss/preset-uno': 0.58.6 + '@unocss/preset-web-fonts': 0.58.6 + '@unocss/preset-wind': 0.58.6 + '@unocss/reset': 0.58.6 + '@unocss/transformer-attributify-jsx': 0.58.6 + '@unocss/transformer-attributify-jsx-babel': 0.58.6 + '@unocss/transformer-compile-class': 0.58.6 + '@unocss/transformer-directives': 0.58.6 + '@unocss/transformer-variant-group': 0.58.6 + '@unocss/vite': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + optionalDependencies: + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)): dependencies: '@unocss/astro': 0.58.6(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) @@ -10618,7 +10724,7 @@ snapshots: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@types/node' - less @@ -10636,7 +10742,7 @@ snapshots: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@types/node' - less @@ -10648,17 +10754,27 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@4.3.2(typescript@5.5.4)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)): + vite-tsconfig-paths@4.3.2(typescript@5.5.4)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)): dependencies: debug: 4.3.5 globrex: 0.1.2 tsconfck: 3.1.0(typescript@5.5.4) optionalDependencies: - vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - supports-color - typescript + vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.45 + rollup: 4.21.2 + optionalDependencies: + '@types/node': 20.14.10 + fsevents: 2.3.3 + terser: 5.31.2 + vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2): dependencies: esbuild: 0.21.5 @@ -10669,9 +10785,9 @@ snapshots: fsevents: 2.3.3 terser: 5.31.2 - vitefu@0.2.5(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)): + vitefu@0.2.5(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)): optionalDependencies: - vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) vitest@2.0.1(@types/node@20.14.10)(terser@5.31.2): dependencies: @@ -10690,7 +10806,7 @@ snapshots: std-env: 3.7.0 tinybench: 2.8.0 tinypool: 1.0.0 - vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) vite-node: 2.0.1(@types/node@20.14.10)(terser@5.31.2) why-is-node-running: 2.3.0 optionalDependencies: From a0ee14bdc04c99571e5e5ae898ecbbcd48bc61ab Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 30 Aug 2024 18:58:09 +0900 Subject: [PATCH 24/33] fix: fix client hmr --- packages/react-server/src/plugin/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index 470cc6352..3a62edcbe 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -278,7 +278,10 @@ export function vitePluginReactServer( // In this case, reload all importers (for css hmr), // and return empty modules to avoid full-reload const importers = ctx.modules.flatMap((m) => [...m.importers]); - if (importers.every((m) => m.id && isCSSRequest(m.id))) { + if ( + importers.length > 0 && + importers.every((m) => m.id && isCSSRequest(m.id)) + ) { for (const m of importers) { await $__global.dev.server.reloadEnvironmentModule(m); } From 5c610bb8e786da74820dabbd738211b4e30706c6 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sat, 31 Aug 2024 14:38:52 +0900 Subject: [PATCH 25/33] chore: fix version --- package.json | 5 +- patches/vite@6.0.0-alpha.22.patch | 40 ----- pnpm-lock.yaml | 233 +++++++++++++++--------------- 3 files changed, 115 insertions(+), 163 deletions(-) delete mode 100644 patches/vite@6.0.0-alpha.22.patch diff --git a/package.json b/package.json index 727285821..c23cf0b76 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "tsup": "^8.1.0", "tsx": "^4.16.2", "typescript": "^5.5.4", - "vite": "6.0.0-alpha.22", + "vite": "6.0.0-alpha.23", "vitest": "^2.0.1", "wrangler": "^3.76.0" }, @@ -46,9 +46,6 @@ "react-server-dom-webpack": "$react-server-dom-webpack", "@types/react": "$@types/react", "@types/react-dom": "$@types/react-dom" - }, - "patchedDependencies": { - "vite@6.0.0-alpha.22": "patches/vite@6.0.0-alpha.22.patch" } } } diff --git a/patches/vite@6.0.0-alpha.22.patch b/patches/vite@6.0.0-alpha.22.patch deleted file mode 100644 index 5a92acec3..000000000 --- a/patches/vite@6.0.0-alpha.22.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/dist/node/index.d.ts b/dist/node/index.d.ts -index c2c1bdae45811860c366cc38b24231fd9fd72596..af378a7eb752718107d3974c5e426456c988e0d8 100644 ---- a/dist/node/index.d.ts -+++ b/dist/node/index.d.ts -@@ -1062,7 +1062,7 @@ declare class EnvironmentModuleGraph { - getModulesByFile(file: string): Set | undefined; - onFileChange(file: string): void; - onFileDelete(file: string): void; -- invalidateModule(mod: EnvironmentModuleNode, seen?: Set, timestamp?: number, isHmr?: boolean, -+ invalidateModule(mod: EnvironmentModuleNode, seen?: Set, timestamp?: number, isHmr?: boolean, - ): void; - invalidateAll(): void; - /** -@@ -1073,7 +1073,7 @@ declare class EnvironmentModuleGraph { - * @param staticImportedUrls Subset of `importedModules` where they're statically imported in code. - * This is only used for soft invalidations so `undefined` is fine but may cause more runtime processing. - */ -- updateModuleInfo(mod: EnvironmentModuleNode, importedModules: Set, importedBindings: Map> | null, acceptedModules: Set, acceptedExports: Set | null, isSelfAccepting: boolean, -+ updateModuleInfo(mod: EnvironmentModuleNode, importedModules: Set, importedBindings: Map> | null, acceptedModules: Set, acceptedExports: Set | null, isSelfAccepting: boolean, - ): Promise | undefined>; - ensureEntryFromUrl(rawUrl: string, setIsSelfAccepting?: boolean): Promise; - createFileOnlyEntry(file: string): EnvironmentModuleNode; -@@ -1140,7 +1140,7 @@ declare class ModuleGraph { - getModulesByFile(file: string): Set | undefined; - onFileChange(file: string): void; - onFileDelete(file: string): void; -- invalidateModule(mod: ModuleNode, seen?: Set, timestamp?: number, isHmr?: boolean, -+ invalidateModule(mod: ModuleNode, seen?: Set, timestamp?: number, isHmr?: boolean, - ): void; - invalidateAll(): void; - ensureEntryFromUrl(rawUrl: string, ssr?: boolean, setIsSelfAccepting?: boolean): Promise; -@@ -2886,7 +2886,7 @@ interface ViteDevServer { - /** - * Module execution environments attached to the Vite server. - */ -- environments: Record<'client' | 'ssr' | (string & Record), DevEnvironment>; -+ environments: Record<'client' | 'ssr' | (string & {}), DevEnvironment>; - /** - * Module graph that tracks the import relationships, url to file mapping - * and hmr state. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba22ce5c0..ca863317b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - vite: 6.0.0-alpha.22 + vite: 6.0.0-alpha.23 react: 19.0.0-rc-eb3ad065-20240822 react-dom: 19.0.0-rc-eb3ad065-20240822 react-is: 19.0.0-rc-eb3ad065-20240822 @@ -13,11 +13,6 @@ overrides: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 -patchedDependencies: - vite@6.0.0-alpha.22: - hash: joa2scchvfwbqcietvmp2gzuq4 - path: patches/vite@6.0.0-alpha.22.patch - importers: .: @@ -45,10 +40,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) '@vitejs/plugin-react-swc': specifier: ^3.7.0 - version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) esbuild: specifier: ^0.23.0 version: 0.23.0 @@ -74,8 +69,8 @@ importers: specifier: ^5.5.4 version: 5.5.4 vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) vitest: specifier: ^2.0.1 version: 2.0.1(@types/node@20.14.10)(terser@5.31.2) @@ -86,8 +81,8 @@ importers: packages/error-overlay: dependencies: vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/error-overlay/examples/basic: dependencies: @@ -104,8 +99,8 @@ importers: specifier: ^0.30.8 version: 0.30.10 vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) devDependencies: esbuild: specifier: ^0.21.5 @@ -130,8 +125,8 @@ importers: specifier: latest version: link:../.. vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/react-server: dependencies: @@ -154,11 +149,11 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822)(webpack@5.93.0(@swc/core@1.6.13(@swc/helpers@0.5.12))(esbuild@0.23.0)) vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) vitefu: specifier: ^0.2.5 - version: 0.2.5(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 0.2.5(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) devDependencies: '@edge-runtime/cookies': specifier: ^5.0.0 @@ -183,7 +178,7 @@ importers: version: 0.6.2 '@vitejs/plugin-react-swc': specifier: ^3.7.0 - version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) esbuild: specifier: ^0.20.2 version: 0.20.2 @@ -197,11 +192,11 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.4)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.2(typescript@5.5.4)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) devDependencies: '@hiogawa/react-server': specifier: workspace:* @@ -251,7 +246,7 @@ importers: devDependencies: '@hiogawa/unocss-preset-antd': specifier: 2.2.1-pre.7 - version: 2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))) + version: 2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))) '@hiogawa/utils': specifier: latest version: 1.7.0 @@ -287,16 +282,16 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) magic-string: specifier: ^0.30.8 version: 0.30.10 unocss: specifier: ^0.58.6 - version: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/cloudflare: dependencies: @@ -326,8 +321,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/custom-out-dir: dependencies: @@ -357,8 +352,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/minimal: dependencies: @@ -385,8 +380,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/next: dependencies: @@ -416,8 +411,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/postcss-tailwind: dependencies: @@ -447,8 +442,8 @@ importers: specifier: ^3.4.10 version: 3.4.10 vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/prerender: dependencies: @@ -482,10 +477,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: latest - version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/starter: dependencies: @@ -516,10 +511,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/server-asset: dependencies: @@ -527,14 +522,14 @@ importers: specifier: ^0.30.8 version: 0.30.10 vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/ssr-css: dependencies: vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/transforms: dependencies: @@ -555,8 +550,8 @@ importers: packages/vite-glob-routes: dependencies: vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) devDependencies: '@hattip/compose': specifier: ^0.0.44 @@ -689,7 +684,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) react: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822 @@ -700,8 +695,8 @@ importers: specifier: ^6.22.3 version: 6.22.3(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/vite-glob-routes/examples/ssr: devDependencies: @@ -737,7 +732,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) esbuild: specifier: ^0.20.2 version: 0.20.2 @@ -754,20 +749,20 @@ importers: specifier: ^6.22.3 version: 6.22.3(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/vite-import-dev-server: dependencies: vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare: dependencies: vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) devDependencies: '@cloudflare/workers-types': specifier: ^4.20240821.1 @@ -786,7 +781,7 @@ importers: dependencies: '@hiogawa/tiny-react': specifier: 0.0.2-pre.9 - version: 0.0.2-pre.9(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 0.0.2-pre.9(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) '@hiogawa/vite-node-miniflare': specifier: latest version: link:../.. @@ -797,8 +792,8 @@ importers: specifier: ^3.20240821.2 version: 3.20240821.2 vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare/examples/react: dependencies: @@ -813,7 +808,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) miniflare: specifier: ^3.20240821.2 version: 3.20240821.2 @@ -824,8 +819,8 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare/examples/react-router: dependencies: @@ -849,7 +844,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) miniflare: specifier: ^3.20240821.2 version: 3.20240821.2 @@ -863,8 +858,8 @@ importers: specifier: ^6.22.3 version: 6.22.3(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare/examples/remix: dependencies: @@ -892,7 +887,7 @@ importers: version: link:../.. '@remix-run/dev': specifier: 2.8.1 - version: 2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0)) + version: 2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0)) '@types/react': specifier: 18.3.3 version: 18.3.3 @@ -909,8 +904,8 @@ importers: specifier: ^1.4.1 version: 1.5.4 vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/vite-plugin-simple-hmr: dependencies: @@ -918,8 +913,8 @@ importers: specifier: ^0.30.8 version: 0.30.10 vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) devDependencies: '@types/estree': specifier: ^1.0.5 @@ -937,8 +932,8 @@ importers: packages/vite-plugin-ssr-middleware: dependencies: vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages/vite-plugin-ssr-middleware/examples/react: dependencies: @@ -953,7 +948,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) react: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822 @@ -961,8 +956,8 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.22 - version: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-alpha.23 + version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) packages: @@ -2002,7 +1997,7 @@ packages: '@hiogawa/theme-script@0.0.4-pre.3': resolution: {integrity: sha512-2uxVhemdAMUFE/OaUcaTT2QeZsXnxtnF/CLNs+CcrlgwaUXXfsnXUTvUZCz8MTmxzzz4Vp5hfAyi4pp58XHJCQ==} peerDependencies: - vite: 6.0.0-alpha.22 + vite: 6.0.0-alpha.23 peerDependenciesMeta: vite: optional: true @@ -2033,7 +2028,7 @@ packages: '@hiogawa/tiny-react@0.0.2-pre.9': resolution: {integrity: sha512-q5zIFwmJMMLbq4g0e/2/AKaggjsOl0dQ6fAiG7k/PjOdj3/xWJvcxr7oCOzybEuxR7oNIOgsBhydBqZPRQ+BLQ==} peerDependencies: - vite: 6.0.0-alpha.22 + vite: 6.0.0-alpha.23 peerDependenciesMeta: vite: optional: true @@ -2168,7 +2163,7 @@ packages: peerDependencies: '@remix-run/serve': ^2.8.1 typescript: ^5.1.0 - vite: 6.0.0-alpha.22 + vite: 6.0.0-alpha.23 wrangler: ^3.28.2 peerDependenciesMeta: '@remix-run/serve': @@ -2636,7 +2631,7 @@ packages: '@unocss/astro@0.58.6': resolution: {integrity: sha512-0BvbhEp5Ln6wFNnhISusB2hcfycWkdgnjlFMcLT69efvj4G39MzB6JYT/1qiidLfpj35HcqkpBz7TfZ4bUmOAw==} peerDependencies: - vite: 6.0.0-alpha.22 + vite: 6.0.0-alpha.23 peerDependenciesMeta: vite: optional: true @@ -2717,7 +2712,7 @@ packages: '@unocss/vite@0.58.6': resolution: {integrity: sha512-DPXCoYU/Ozqc/Jeptd41XvtW8MSgVxmtTyhpMAsm/hJuBfwIV7Fy3TZquf4V9BpaTb4ao1LVXzgXmVUmj2HXpA==} peerDependencies: - vite: 6.0.0-alpha.22 + vite: 6.0.0-alpha.23 '@vanilla-extract/babel-plugin-debug-ids@1.0.5': resolution: {integrity: sha512-Rc9A6ylsw7EBErmpgqCMvc/Z/eEZxI5k1xfLQHw7f5HHh3oc5YfzsAsYU/PdmSNjF1dp3sGEViBdDltvwnfVaA==} @@ -2738,13 +2733,13 @@ packages: '@vitejs/plugin-react-swc@3.7.0': resolution: {integrity: sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==} peerDependencies: - vite: 6.0.0-alpha.22 + vite: 6.0.0-alpha.23 '@vitejs/plugin-react@4.3.1': resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: 6.0.0-alpha.22 + vite: 6.0.0-alpha.23 '@vitest/expect@2.0.1': resolution: {integrity: sha512-yw70WL3ZwzbI2O3MOXYP2Shf4vqVkS3q5FckLJ6lhT9VMMtDyWdofD53COZcoeuHwsBymdOZp99r5bOr5g+oeA==} @@ -5363,7 +5358,7 @@ packages: engines: {node: '>=14'} peerDependencies: '@unocss/webpack': 0.58.6 - vite: 6.0.0-alpha.22 + vite: 6.0.0-alpha.23 peerDependenciesMeta: '@unocss/webpack': optional: true @@ -5442,13 +5437,13 @@ packages: vite-tsconfig-paths@4.3.2: resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} peerDependencies: - vite: 6.0.0-alpha.22 + vite: 6.0.0-alpha.23 peerDependenciesMeta: vite: optional: true - vite@6.0.0-alpha.22: - resolution: {integrity: sha512-jPMZfRviR+ObfIJhMxauT3ac1qujuW1fj0qMVllQ32eCKO8f6mOmJgxjwpAKskja8nsZMc8nFwWypLJBIfn2Kg==} + vite@6.0.0-alpha.23: + resolution: {integrity: sha512-+J9M4gG1J7do8MM++ODune0R1DOAD4NmkN84bTBuW62Bj0iwaL1B0dXvGwDIB2gwttkCiNPX7xvzQTNed4rvcA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -5512,7 +5507,7 @@ packages: vitefu@0.2.5: resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: - vite: 6.0.0-alpha.22 + vite: 6.0.0-alpha.23 peerDependenciesMeta: vite: optional: true @@ -6408,9 +6403,9 @@ snapshots: optionalDependencies: react: 19.0.0-rc-eb3ad065-20240822 - '@hiogawa/tiny-react@0.0.2-pre.9(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))': + '@hiogawa/tiny-react@0.0.2-pre.9(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))': optionalDependencies: - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) '@hiogawa/tiny-rpc@0.2.3-pre.18': {} @@ -6418,9 +6413,9 @@ snapshots: optionalDependencies: react: 19.0.0-rc-eb3ad065-20240822 - '@hiogawa/unocss-preset-antd@2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)))': + '@hiogawa/unocss-preset-antd@2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)))': dependencies: - unocss: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + unocss: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) '@hiogawa/unocss-preset-antd@2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)))': dependencies: @@ -6608,7 +6603,7 @@ snapshots: '@polka/url@1.0.0-next.25': {} - '@remix-run/dev@2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0))': + '@remix-run/dev@2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0))': dependencies: '@babel/core': 7.24.7 '@babel/generator': 7.24.7 @@ -6665,7 +6660,7 @@ snapshots: ws: 7.5.9 optionalDependencies: typescript: 5.5.4 - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) wrangler: 3.76.0(@cloudflare/workers-types@4.20240909.0) transitivePeerDependencies: - '@types/node' @@ -7082,13 +7077,13 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@unocss/astro@0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))': + '@unocss/astro@0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@unocss/core': 0.58.6 '@unocss/reset': 0.58.6 - '@unocss/vite': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + '@unocss/vite': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) optionalDependencies: - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - rollup @@ -7229,7 +7224,7 @@ snapshots: dependencies: '@unocss/core': 0.58.6 - '@unocss/vite@0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))': + '@unocss/vite@0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@ampproject/remapping': 2.3.0 '@rollup/pluginutils': 5.1.0(rollup@4.21.2) @@ -7241,7 +7236,7 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.10 - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - rollup @@ -7294,7 +7289,7 @@ snapshots: lodash: 4.17.21 mlly: 1.6.1 outdent: 0.8.0 - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) vite-node: 1.4.0(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@types/node' @@ -7315,21 +7310,21 @@ snapshots: satori: 0.10.9 yoga-wasm-web: 0.3.3 - '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))': + '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@swc/core': 1.6.13(@swc/helpers@0.5.12) - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.1(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2))': + '@vitejs/plugin-react@4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@babel/core': 7.24.7 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - supports-color @@ -10583,9 +10578,9 @@ snapshots: universalify@2.0.1: {} - unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)): + unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)): dependencies: - '@unocss/astro': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + '@unocss/astro': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) '@unocss/cli': 0.58.6(rollup@4.21.2) '@unocss/core': 0.58.6 '@unocss/extractor-arbitrary-variants': 0.58.6 @@ -10604,9 +10599,9 @@ snapshots: '@unocss/transformer-compile-class': 0.58.6 '@unocss/transformer-directives': 0.58.6 '@unocss/transformer-variant-group': 0.58.6 - '@unocss/vite': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)) + '@unocss/vite': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) optionalDependencies: - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - postcss - rollup @@ -10724,7 +10719,7 @@ snapshots: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@types/node' - less @@ -10742,7 +10737,7 @@ snapshots: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@types/node' - less @@ -10754,18 +10749,18 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@4.3.2(typescript@5.5.4)(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)): + vite-tsconfig-paths@4.3.2(typescript@5.5.4)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)): dependencies: debug: 4.3.5 globrex: 0.1.2 tsconfck: 3.1.0(typescript@5.5.4) optionalDependencies: - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - supports-color - typescript - vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2): + vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2): dependencies: esbuild: 0.21.5 postcss: 8.4.45 @@ -10785,9 +10780,9 @@ snapshots: fsevents: 2.3.3 terser: 5.31.2 - vitefu@0.2.5(vite@6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2)): + vitefu@0.2.5(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)): optionalDependencies: - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) vitest@2.0.1(@types/node@20.14.10)(terser@5.31.2): dependencies: @@ -10806,7 +10801,7 @@ snapshots: std-env: 3.7.0 tinybench: 2.8.0 tinypool: 1.0.0 - vite: 6.0.0-alpha.22(patch_hash=joa2scchvfwbqcietvmp2gzuq4)(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) vite-node: 2.0.1(@types/node@20.14.10)(terser@5.31.2) why-is-node-running: 2.3.0 optionalDependencies: From dafb75ad7ceedb4feeaa1cb1bf8bd1259b9c1ce5 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sun, 22 Sep 2024 17:41:40 +0900 Subject: [PATCH 26/33] fix: fix postcss tailwind hmr --- packages/react-server/src/plugin/index.ts | 34 +++++++++++++---------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index 3a62edcbe..c2ab7ece8 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -242,19 +242,18 @@ export function vitePluginReactServer( // console.log("[hotUpdate]", [ // this.environment.name, // ctx.file, - // // ctx.modules, - // // ctx.modules.flatMap(m => [...m.importers]), + // ctx.modules.length, + // ctx.modules.flatMap(m => [...m.importers]), // ]); + const isClientReference = ctx.modules.every( + (mod) => mod.id && manager.clientReferenceMap.has(mod.id), + ); + if (this.environment.name === "react-server") { // client reference id is also in react server module graph, // but we skip RSC HMR for this case to avoid conflicting with Client HMR. - if ( - ctx.modules.length > 0 && - ctx.modules.every( - (mod) => mod.id && !manager.clientReferenceMap.has(mod.id), - ) - ) { + if (ctx.modules.length > 0 && !isClientReference) { $__global.dev.server.environments.client.hot.send({ type: "custom", event: "rsc:update", @@ -277,15 +276,22 @@ export function vitePluginReactServer( // due to postcss creating dependencies from style.css to all source files. // In this case, reload all importers (for css hmr), // and return empty modules to avoid full-reload - const importers = ctx.modules.flatMap((m) => [...m.importers]); + const reactServerEnv = + $__global.dev.server.environments["react-server"]!; if ( - importers.length > 0 && - importers.every((m) => m.id && isCSSRequest(m.id)) + !isClientReference && + reactServerEnv.moduleGraph.getModulesByFile(ctx.file) ) { - for (const m of importers) { - await $__global.dev.server.reloadEnvironmentModule(m); + const importers = ctx.modules.flatMap((m) => [...m.importers]); + if ( + importers.length > 0 && + importers.every((m) => m.id && isCSSRequest(m.id)) + ) { + for (const m of importers) { + await $__global.dev.server.reloadEnvironmentModule(m); + } + return []; } - return []; } } From a9af3ef75848114451289a4006c14ef9abff2841 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sat, 31 Aug 2024 15:30:52 +0900 Subject: [PATCH 27/33] chore: cleanup --- packages/react-server/src/entry/ssr.tsx | 23 +++++++++++-------- .../react-server/src/features/assets/css.ts | 1 - packages/react-server/src/global.ts | 1 - 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/react-server/src/entry/ssr.tsx b/packages/react-server/src/entry/ssr.tsx index 1f4dfaa38..f7370a25d 100644 --- a/packages/react-server/src/entry/ssr.tsx +++ b/packages/react-server/src/entry/ssr.tsx @@ -1,7 +1,7 @@ import { createDebug, tinyassert } from "@hiogawa/utils"; import { createMemoryHistory } from "@tanstack/history"; import ReactDOMServer from "react-dom/server.edge"; -import type { ModuleNode, ViteDevServer } from "vite"; +import type { DevEnvironment, EnvironmentModuleNode } from "vite"; import type { SsrAssetsType } from "../features/assets/plugin"; import { DEV_SSR_CSS, SERVER_CSS_PROXY } from "../features/assets/shared"; import { @@ -265,21 +265,24 @@ async function devInspectHandler(request: Request) { tinyassert(request.method === "POST"); const data = await request.json(); if (data.type === "module") { - let mod: ModuleNode | undefined; + let mod: EnvironmentModuleNode | undefined; if (data.environment === "ssr") { - mod = await getModuleNode($__global.dev.server, data.url, true); + mod = await getModuleNode( + $__global.dev.server.environments.ssr, + data.url, + ); } if (data.environment === "react-server") { - // mod = await getModuleNode($__global.dev.reactServer, data.url, true); + mod = await getModuleNode( + $__global.dev.server.environments["react-server"]!, + data.url, + ); } const result = mod && { id: mod.id, lastInvalidationTimestamp: mod.lastInvalidationTimestamp, importers: [...(mod.importers ?? [])].map((m) => m.id), - ssrImportedModules: [...(mod.ssrImportedModules ?? [])].map((m) => m.id), - clientImportedModules: [...(mod.clientImportedModules ?? [])].map( - (m) => m.id, - ), + importedModules: [...(mod.importedModules ?? [])].map((m) => m.id), }; return new Response(JSON.stringify(result || false, null, 2), { headers: { "content-type": "application/json" }, @@ -288,8 +291,8 @@ async function devInspectHandler(request: Request) { tinyassert(false); } -async function getModuleNode(server: ViteDevServer, url: string, ssr: boolean) { - const resolved = await server.moduleGraph.resolveUrl(url, ssr); +async function getModuleNode(server: DevEnvironment, url: string) { + const resolved = await server.moduleGraph.resolveUrl(url); return server.moduleGraph.getModuleById(resolved[1]); } diff --git a/packages/react-server/src/features/assets/css.ts b/packages/react-server/src/features/assets/css.ts index a2c61b230..01b768079 100644 --- a/packages/react-server/src/features/assets/css.ts +++ b/packages/react-server/src/features/assets/css.ts @@ -25,7 +25,6 @@ export async function collectStyleUrls( server: DevEnvironment, { entries }: { entries: string[] }, ) { - // const visited = new Set(); const visited = new Set(); async function traverse(url: string) { diff --git a/packages/react-server/src/global.ts b/packages/react-server/src/global.ts index e2df4e803..796d0d704 100644 --- a/packages/react-server/src/global.ts +++ b/packages/react-server/src/global.ts @@ -8,7 +8,6 @@ import type { CallServerCallback } from "./types/react"; export const $__global: { dev: { server: ViteDevServer; - // reactServer: ViteDevServer; reactServerRunner: ModuleRunner; manager: PluginStateManager; }; From 37f9acbf21c35c38fc7759ab25ffa541ddda8079 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sun, 22 Sep 2024 17:44:59 +0900 Subject: [PATCH 28/33] refactor: minor --- .../src/vite/adapters/index.ts | 14 ++++++----- packages/react-server-next/src/vite/index.ts | 25 +++---------------- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/packages/react-server-next/src/vite/adapters/index.ts b/packages/react-server-next/src/vite/adapters/index.ts index f8357039c..3381e286c 100644 --- a/packages/react-server-next/src/vite/adapters/index.ts +++ b/packages/react-server-next/src/vite/adapters/index.ts @@ -6,10 +6,10 @@ export type AdapterType = "node" | "vercel" | "vercel-edge" | "cloudflare"; export function adapterPlugin(options: { adapter: AdapterType; outDir: string; -}): { server?: Plugin[]; client?: Plugin[] } { +}): Plugin[] { const adapter = options.adapter ?? autoSelectAdapter(); if (adapter === "node") { - return {}; + return []; } const buildPlugin: Plugin = { @@ -102,10 +102,12 @@ export function adapterPlugin(options: { }, }; - return { - server: [aliasPlatformPlugin], - client: [registerHooksPlugin, buildPlugin, devPlatformPlugin], - }; + return [ + registerHooksPlugin, + buildPlugin, + devPlatformPlugin, + aliasPlatformPlugin, + ]; } // cf. https://github.com/sveltejs/kit/blob/52e5461b055a104694f276859a7104f58452fab0/packages/adapter-auto/adapters.js diff --git a/packages/react-server-next/src/vite/index.ts b/packages/react-server-next/src/vite/index.ts index 7702f0c99..da59db9d9 100644 --- a/packages/react-server-next/src/vite/index.ts +++ b/packages/react-server-next/src/vite/index.ts @@ -65,12 +65,10 @@ export default function vitePluginReactServerNext( entry: "next/vite/entry-ssr", preview: path.resolve(outDir, "server", "index.js"), }), - Object.values( - adapterPlugin({ - adapter, - outDir, - }), - ), + adapterPlugin({ + adapter, + outDir, + }), appFaviconPlugin(), { name: "next-exclude-optimize", @@ -107,21 +105,6 @@ function nextOgPlugin(): Plugin[] { ), }, }, - // per-environment alias actually requires an extra plugin - // so let's avoid this for now - // https://github.com/vitejs/vite/pull/17583/#issuecomment-2200115882 - // environments: { - // 'react-server': { - // resolve: { - // alias: { - // "@vercel/og": path.resolve( - // require.resolve("@vercel/og/package.json"), - // "../dist/index.edge.js", - // ), - // } - // } - // } - // } }; }, }, From c3dbb4084caa45536f4e2885ed90d306b144e2ba Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sun, 22 Sep 2024 18:04:14 +0900 Subject: [PATCH 29/33] fix: change reloadEnvironmentModule --- packages/react-server/src/plugin/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index c2ab7ece8..73bcc93a1 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -288,7 +288,7 @@ export function vitePluginReactServer( importers.every((m) => m.id && isCSSRequest(m.id)) ) { for (const m of importers) { - await $__global.dev.server.reloadEnvironmentModule(m); + await this.environment.reloadModule(m); } return []; } From 2fe323cabc3cb74323931829eb053760da9ee0ac Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sun, 22 Sep 2024 18:39:01 +0900 Subject: [PATCH 30/33] chore: cleanup --- packages/react-server/src/plugin/index.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index 73bcc93a1..e8b34c079 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -239,13 +239,6 @@ export function vitePluginReactServer( } }, async hotUpdate(ctx) { - // console.log("[hotUpdate]", [ - // this.environment.name, - // ctx.file, - // ctx.modules.length, - // ctx.modules.flatMap(m => [...m.importers]), - // ]); - const isClientReference = ctx.modules.every( (mod) => mod.id && manager.clientReferenceMap.has(mod.id), ); From 8f1720461fa045e7ac57b38cb237e4603e5139d4 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sun, 22 Sep 2024 17:50:33 +0900 Subject: [PATCH 31/33] chore(deps): vite 6.0.0-beta.1 --- package.json | 2 +- .../react-server/examples/basic/package.json | 2 +- pnpm-lock.yaml | 307 ++++++------------ 3 files changed, 100 insertions(+), 211 deletions(-) diff --git a/package.json b/package.json index c23cf0b76..01e003a05 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "tsup": "^8.1.0", "tsx": "^4.16.2", "typescript": "^5.5.4", - "vite": "6.0.0-alpha.23", + "vite": "6.0.0-beta.1", "vitest": "^2.0.1", "wrangler": "^3.76.0" }, diff --git a/packages/react-server/examples/basic/package.json b/packages/react-server/examples/basic/package.json index 7322d082a..32423a94e 100644 --- a/packages/react-server/examples/basic/package.json +++ b/packages/react-server/examples/basic/package.json @@ -51,6 +51,6 @@ "@vitejs/plugin-react": "^4.3.1", "magic-string": "^0.30.8", "unocss": "^0.58.6", - "vite": "alpha" + "vite": "beta" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca863317b..c14826afd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - vite: 6.0.0-alpha.23 + vite: 6.0.0-beta.1 react: 19.0.0-rc-eb3ad065-20240822 react-dom: 19.0.0-rc-eb3ad065-20240822 react-is: 19.0.0-rc-eb3ad065-20240822 @@ -40,10 +40,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) '@vitejs/plugin-react-swc': specifier: ^3.7.0 - version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) esbuild: specifier: ^0.23.0 version: 0.23.0 @@ -69,8 +69,8 @@ importers: specifier: ^5.5.4 version: 5.5.4 vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) vitest: specifier: ^2.0.1 version: 2.0.1(@types/node@20.14.10)(terser@5.31.2) @@ -81,8 +81,8 @@ importers: packages/error-overlay: dependencies: vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/error-overlay/examples/basic: dependencies: @@ -99,8 +99,8 @@ importers: specifier: ^0.30.8 version: 0.30.10 vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) devDependencies: esbuild: specifier: ^0.21.5 @@ -125,8 +125,8 @@ importers: specifier: latest version: link:../.. vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/react-server: dependencies: @@ -149,11 +149,11 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822)(webpack@5.93.0(@swc/core@1.6.13(@swc/helpers@0.5.12))(esbuild@0.23.0)) vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) vitefu: specifier: ^0.2.5 - version: 0.2.5(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 0.2.5(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) devDependencies: '@edge-runtime/cookies': specifier: ^5.0.0 @@ -178,7 +178,7 @@ importers: version: 0.6.2 '@vitejs/plugin-react-swc': specifier: ^3.7.0 - version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) esbuild: specifier: ^0.20.2 version: 0.20.2 @@ -192,11 +192,11 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.4)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.2(typescript@5.5.4)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) devDependencies: '@hiogawa/react-server': specifier: workspace:* @@ -246,7 +246,7 @@ importers: devDependencies: '@hiogawa/unocss-preset-antd': specifier: 2.2.1-pre.7 - version: 2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))) + version: 2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))) '@hiogawa/utils': specifier: latest version: 1.7.0 @@ -282,16 +282,16 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) magic-string: specifier: ^0.30.8 version: 0.30.10 unocss: specifier: ^0.58.6 - version: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/cloudflare: dependencies: @@ -321,8 +321,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/custom-out-dir: dependencies: @@ -352,8 +352,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/minimal: dependencies: @@ -380,8 +380,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/next: dependencies: @@ -411,8 +411,8 @@ importers: specifier: 18.3.0 version: 18.3.0 vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/postcss-tailwind: dependencies: @@ -442,8 +442,8 @@ importers: specifier: ^3.4.10 version: 3.4.10 vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/prerender: dependencies: @@ -477,10 +477,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: latest - version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/react-server/examples/starter: dependencies: @@ -511,10 +511,10 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/server-asset: dependencies: @@ -522,14 +522,14 @@ importers: specifier: ^0.30.8 version: 0.30.10 vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/ssr-css: dependencies: vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/transforms: dependencies: @@ -550,8 +550,8 @@ importers: packages/vite-glob-routes: dependencies: vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) devDependencies: '@hattip/compose': specifier: ^0.0.44 @@ -684,7 +684,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) react: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822 @@ -695,8 +695,8 @@ importers: specifier: ^6.22.3 version: 6.22.3(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/vite-glob-routes/examples/ssr: devDependencies: @@ -732,7 +732,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) esbuild: specifier: ^0.20.2 version: 0.20.2 @@ -749,20 +749,20 @@ importers: specifier: ^6.22.3 version: 6.22.3(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/vite-import-dev-server: dependencies: vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare: dependencies: vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) devDependencies: '@cloudflare/workers-types': specifier: ^4.20240821.1 @@ -781,7 +781,7 @@ importers: dependencies: '@hiogawa/tiny-react': specifier: 0.0.2-pre.9 - version: 0.0.2-pre.9(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 0.0.2-pre.9(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) '@hiogawa/vite-node-miniflare': specifier: latest version: link:../.. @@ -792,8 +792,8 @@ importers: specifier: ^3.20240821.2 version: 3.20240821.2 vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare/examples/react: dependencies: @@ -808,7 +808,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) miniflare: specifier: ^3.20240821.2 version: 3.20240821.2 @@ -819,8 +819,8 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare/examples/react-router: dependencies: @@ -844,7 +844,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) miniflare: specifier: ^3.20240821.2 version: 3.20240821.2 @@ -858,8 +858,8 @@ importers: specifier: ^6.22.3 version: 6.22.3(react-dom@19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822))(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/vite-node-miniflare/examples/remix: dependencies: @@ -887,7 +887,7 @@ importers: version: link:../.. '@remix-run/dev': specifier: 2.8.1 - version: 2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0)) + version: 2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0)) '@types/react': specifier: 18.3.3 version: 18.3.3 @@ -904,8 +904,8 @@ importers: specifier: ^1.4.1 version: 1.5.4 vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/vite-plugin-simple-hmr: dependencies: @@ -913,8 +913,8 @@ importers: specifier: ^0.30.8 version: 0.30.10 vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) devDependencies: '@types/estree': specifier: ^1.0.5 @@ -932,8 +932,8 @@ importers: packages/vite-plugin-ssr-middleware: dependencies: vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages/vite-plugin-ssr-middleware/examples/react: dependencies: @@ -948,7 +948,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) + version: 4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) react: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822 @@ -956,8 +956,8 @@ importers: specifier: 19.0.0-rc-eb3ad065-20240822 version: 19.0.0-rc-eb3ad065-20240822(react@19.0.0-rc-eb3ad065-20240822) vite: - specifier: 6.0.0-alpha.23 - version: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + specifier: 6.0.0-beta.1 + version: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) packages: @@ -1997,7 +1997,7 @@ packages: '@hiogawa/theme-script@0.0.4-pre.3': resolution: {integrity: sha512-2uxVhemdAMUFE/OaUcaTT2QeZsXnxtnF/CLNs+CcrlgwaUXXfsnXUTvUZCz8MTmxzzz4Vp5hfAyi4pp58XHJCQ==} peerDependencies: - vite: 6.0.0-alpha.23 + vite: 6.0.0-beta.1 peerDependenciesMeta: vite: optional: true @@ -2028,7 +2028,7 @@ packages: '@hiogawa/tiny-react@0.0.2-pre.9': resolution: {integrity: sha512-q5zIFwmJMMLbq4g0e/2/AKaggjsOl0dQ6fAiG7k/PjOdj3/xWJvcxr7oCOzybEuxR7oNIOgsBhydBqZPRQ+BLQ==} peerDependencies: - vite: 6.0.0-alpha.23 + vite: 6.0.0-beta.1 peerDependenciesMeta: vite: optional: true @@ -2163,7 +2163,7 @@ packages: peerDependencies: '@remix-run/serve': ^2.8.1 typescript: ^5.1.0 - vite: 6.0.0-alpha.23 + vite: 6.0.0-beta.1 wrangler: ^3.28.2 peerDependenciesMeta: '@remix-run/serve': @@ -2631,7 +2631,7 @@ packages: '@unocss/astro@0.58.6': resolution: {integrity: sha512-0BvbhEp5Ln6wFNnhISusB2hcfycWkdgnjlFMcLT69efvj4G39MzB6JYT/1qiidLfpj35HcqkpBz7TfZ4bUmOAw==} peerDependencies: - vite: 6.0.0-alpha.23 + vite: 6.0.0-beta.1 peerDependenciesMeta: vite: optional: true @@ -2712,7 +2712,7 @@ packages: '@unocss/vite@0.58.6': resolution: {integrity: sha512-DPXCoYU/Ozqc/Jeptd41XvtW8MSgVxmtTyhpMAsm/hJuBfwIV7Fy3TZquf4V9BpaTb4ao1LVXzgXmVUmj2HXpA==} peerDependencies: - vite: 6.0.0-alpha.23 + vite: 6.0.0-beta.1 '@vanilla-extract/babel-plugin-debug-ids@1.0.5': resolution: {integrity: sha512-Rc9A6ylsw7EBErmpgqCMvc/Z/eEZxI5k1xfLQHw7f5HHh3oc5YfzsAsYU/PdmSNjF1dp3sGEViBdDltvwnfVaA==} @@ -2733,13 +2733,13 @@ packages: '@vitejs/plugin-react-swc@3.7.0': resolution: {integrity: sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==} peerDependencies: - vite: 6.0.0-alpha.23 + vite: 6.0.0-beta.1 '@vitejs/plugin-react@4.3.1': resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: 6.0.0-alpha.23 + vite: 6.0.0-beta.1 '@vitest/expect@2.0.1': resolution: {integrity: sha512-yw70WL3ZwzbI2O3MOXYP2Shf4vqVkS3q5FckLJ6lhT9VMMtDyWdofD53COZcoeuHwsBymdOZp99r5bOr5g+oeA==} @@ -5358,7 +5358,7 @@ packages: engines: {node: '>=14'} peerDependencies: '@unocss/webpack': 0.58.6 - vite: 6.0.0-alpha.23 + vite: 6.0.0-beta.1 peerDependenciesMeta: '@unocss/webpack': optional: true @@ -5437,42 +5437,11 @@ packages: vite-tsconfig-paths@4.3.2: resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} peerDependencies: - vite: 6.0.0-alpha.23 + vite: 6.0.0-beta.1 peerDependenciesMeta: vite: optional: true - vite@6.0.0-alpha.23: - resolution: {integrity: sha512-+J9M4gG1J7do8MM++ODune0R1DOAD4NmkN84bTBuW62Bj0iwaL1B0dXvGwDIB2gwttkCiNPX7xvzQTNed4rvcA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@6.0.0-beta.1: resolution: {integrity: sha512-E22XKY2pvL12/sJV4oEtoOnMC6HPaC3HmSBFAjwWontAtbf0Oj2eK3sYgg3ggWvfNx1PlKDdOccxMD4wXGKwPQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -5507,7 +5476,7 @@ packages: vitefu@0.2.5: resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: - vite: 6.0.0-alpha.23 + vite: 6.0.0-beta.1 peerDependenciesMeta: vite: optional: true @@ -6403,9 +6372,9 @@ snapshots: optionalDependencies: react: 19.0.0-rc-eb3ad065-20240822 - '@hiogawa/tiny-react@0.0.2-pre.9(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))': + '@hiogawa/tiny-react@0.0.2-pre.9(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))': optionalDependencies: - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) '@hiogawa/tiny-rpc@0.2.3-pre.18': {} @@ -6413,10 +6382,6 @@ snapshots: optionalDependencies: react: 19.0.0-rc-eb3ad065-20240822 - '@hiogawa/unocss-preset-antd@2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)))': - dependencies: - unocss: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) - '@hiogawa/unocss-preset-antd@2.2.1-pre.7(unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)))': dependencies: unocss: 0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) @@ -6603,7 +6568,7 @@ snapshots: '@polka/url@1.0.0-next.25': {} - '@remix-run/dev@2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0))': + '@remix-run/dev@2.8.1(@types/node@20.14.10)(terser@5.31.2)(typescript@5.5.4)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))(wrangler@3.76.0(@cloudflare/workers-types@4.20240909.0))': dependencies: '@babel/core': 7.24.7 '@babel/generator': 7.24.7 @@ -6660,7 +6625,7 @@ snapshots: ws: 7.5.9 optionalDependencies: typescript: 5.5.4 - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) wrangler: 3.76.0(@cloudflare/workers-types@4.20240909.0) transitivePeerDependencies: - '@types/node' @@ -7077,16 +7042,6 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@unocss/astro@0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))': - dependencies: - '@unocss/core': 0.58.6 - '@unocss/reset': 0.58.6 - '@unocss/vite': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) - optionalDependencies: - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) - transitivePeerDependencies: - - rollup - '@unocss/astro@0.58.6(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@unocss/core': 0.58.6 @@ -7224,22 +7179,6 @@ snapshots: dependencies: '@unocss/core': 0.58.6 - '@unocss/vite@0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.0(rollup@4.21.2) - '@unocss/config': 0.58.6 - '@unocss/core': 0.58.6 - '@unocss/inspector': 0.58.6 - '@unocss/scope': 0.58.6 - '@unocss/transformer-directives': 0.58.6 - chokidar: 3.6.0 - fast-glob: 3.3.2 - magic-string: 0.30.10 - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) - transitivePeerDependencies: - - rollup - '@unocss/vite@0.58.6(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@ampproject/remapping': 2.3.0 @@ -7289,7 +7228,7 @@ snapshots: lodash: 4.17.21 mlly: 1.6.1 outdent: 0.8.0 - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) vite-node: 1.4.0(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@types/node' @@ -7310,24 +7249,13 @@ snapshots: satori: 0.10.9 yoga-wasm-web: 0.3.3 - '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))': + '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.12)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@swc/core': 1.6.13(@swc/helpers@0.5.12) - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.1(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2))': - dependencies: - '@babel/core': 7.24.7 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) - '@types/babel__core': 7.20.5 - react-refresh: 0.14.2 - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) - transitivePeerDependencies: - - supports-color - '@vitejs/plugin-react@4.3.1(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@babel/core': 7.24.7 @@ -10578,35 +10506,6 @@ snapshots: universalify@2.0.1: {} - unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)): - dependencies: - '@unocss/astro': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) - '@unocss/cli': 0.58.6(rollup@4.21.2) - '@unocss/core': 0.58.6 - '@unocss/extractor-arbitrary-variants': 0.58.6 - '@unocss/postcss': 0.58.6(postcss@8.4.45) - '@unocss/preset-attributify': 0.58.6 - '@unocss/preset-icons': 0.58.6 - '@unocss/preset-mini': 0.58.6 - '@unocss/preset-tagify': 0.58.6 - '@unocss/preset-typography': 0.58.6 - '@unocss/preset-uno': 0.58.6 - '@unocss/preset-web-fonts': 0.58.6 - '@unocss/preset-wind': 0.58.6 - '@unocss/reset': 0.58.6 - '@unocss/transformer-attributify-jsx': 0.58.6 - '@unocss/transformer-attributify-jsx-babel': 0.58.6 - '@unocss/transformer-compile-class': 0.58.6 - '@unocss/transformer-directives': 0.58.6 - '@unocss/transformer-variant-group': 0.58.6 - '@unocss/vite': 0.58.6(rollup@4.21.2)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)) - optionalDependencies: - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) - transitivePeerDependencies: - - postcss - - rollup - - supports-color - unocss@0.58.6(postcss@8.4.45)(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)): dependencies: '@unocss/astro': 0.58.6(rollup@4.21.2)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)) @@ -10719,7 +10618,7 @@ snapshots: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@types/node' - less @@ -10737,7 +10636,7 @@ snapshots: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@types/node' - less @@ -10749,27 +10648,17 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@4.3.2(typescript@5.5.4)(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)): + vite-tsconfig-paths@4.3.2(typescript@5.5.4)(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)): dependencies: debug: 4.3.5 globrex: 0.1.2 tsconfck: 3.1.0(typescript@5.5.4) optionalDependencies: - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - supports-color - typescript - vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.45 - rollup: 4.21.2 - optionalDependencies: - '@types/node': 20.14.10 - fsevents: 2.3.3 - terser: 5.31.2 - vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2): dependencies: esbuild: 0.21.5 @@ -10780,9 +10669,9 @@ snapshots: fsevents: 2.3.3 terser: 5.31.2 - vitefu@0.2.5(vite@6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2)): + vitefu@0.2.5(vite@6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2)): optionalDependencies: - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) vitest@2.0.1(@types/node@20.14.10)(terser@5.31.2): dependencies: @@ -10801,7 +10690,7 @@ snapshots: std-env: 3.7.0 tinybench: 2.8.0 tinypool: 1.0.0 - vite: 6.0.0-alpha.23(@types/node@20.14.10)(terser@5.31.2) + vite: 6.0.0-beta.1(@types/node@20.14.10)(terser@5.31.2) vite-node: 2.0.1(@types/node@20.14.10)(terser@5.31.2) why-is-node-running: 2.3.0 optionalDependencies: From b971ba1043bd8c0687e6b7f87f1aada5d8fbaa99 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Tue, 24 Sep 2024 17:31:34 +0900 Subject: [PATCH 32/33] chore: disable hmr for rsc runner --- packages/react-server/src/plugin/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index e8b34c079..f1e74b3aa 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -220,7 +220,9 @@ export function vitePluginReactServer( tinyassert(manager.server); const reactServerEnv = manager.server.environments["react-server"]; tinyassert(reactServerEnv); - const reactServerRunner = createServerModuleRunner(reactServerEnv); + const reactServerRunner = createServerModuleRunner(reactServerEnv, { + hmr: false, + }); $__global.dev = { server: manager.server, reactServerRunner, From 9f3d40b09426b11025ee787d1e137369b85a8d62 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Tue, 24 Sep 2024 18:20:46 +0900 Subject: [PATCH 33/33] chore: just comment --- packages/react-server/src/plugin/index.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/react-server/src/plugin/index.ts b/packages/react-server/src/plugin/index.ts index f1e74b3aa..a80b05dbf 100644 --- a/packages/react-server/src/plugin/index.ts +++ b/packages/react-server/src/plugin/index.ts @@ -220,9 +220,8 @@ export function vitePluginReactServer( tinyassert(manager.server); const reactServerEnv = manager.server.environments["react-server"]; tinyassert(reactServerEnv); - const reactServerRunner = createServerModuleRunner(reactServerEnv, { - hmr: false, - }); + // custom environment's node runner doesn't have hmr currently + const reactServerRunner = createServerModuleRunner(reactServerEnv); $__global.dev = { server: manager.server, reactServerRunner,