diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 71fc7c00..669fabd3 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -311,12 +311,12 @@ export default function vitePluginRsc( }, optimizeDeps: { include: [ - 'react', - 'react-dom', - 'react/jsx-runtime', - 'react/jsx-dev-runtime', - 'react-dom/server.edge', - `${REACT_SERVER_DOM_NAME}/client.edge`, + // 'react', + // 'react-dom', + // 'react/jsx-runtime', + // 'react/jsx-dev-runtime', + // 'react-dom/server.edge', + // `${REACT_SERVER_DOM_NAME}/client.edge`, ], exclude: [PKG_NAME], }, @@ -337,12 +337,12 @@ export default function vitePluginRsc( }, optimizeDeps: { include: [ - 'react', - 'react-dom', - 'react/jsx-runtime', - 'react/jsx-dev-runtime', - `${REACT_SERVER_DOM_NAME}/server.edge`, - `${REACT_SERVER_DOM_NAME}/client.edge`, + // 'react', + // 'react-dom', + // 'react/jsx-runtime', + // 'react/jsx-dev-runtime', + // `${REACT_SERVER_DOM_NAME}/server.edge`, + // `${REACT_SERVER_DOM_NAME}/client.edge`, ], exclude: [PKG_NAME], }, diff --git a/packages/plugin-rsc/src/plugins/cjs.ts b/packages/plugin-rsc/src/plugins/cjs.ts index a501bbe0..9a65d8f1 100644 --- a/packages/plugin-rsc/src/plugins/cjs.ts +++ b/packages/plugin-rsc/src/plugins/cjs.ts @@ -19,7 +19,7 @@ export function cjsModuleRunnerPlugin(): Plugin[] { applyToEnvironment: (env) => env.config.dev.moduleRunnerTransform, async transform(code, id) { if ( - id.includes('/node_modules/') && + (id.includes('/node_modules/') || isDevCjs(id)) && !id.startsWith(this.environment.config.cacheDir) && /\b(require|exports)\b/.test(code) ) { @@ -72,6 +72,10 @@ export default module.exports; } function extractPackageKey(id: string): string { + if (isDevCjs(id)) { + return '@vitejs/plugin-rsc' + } + // .../.yarn/cache/abc/... => abc const yarnMatch = id.match(/\/.yarn\/cache\/([^/]+)/) if (yarnMatch) { @@ -89,3 +93,11 @@ function extractPackageKey(id: string): string { } return id } + +// this is needed only when developing package itself within pnpm workspace +function isDevCjs(id: string): boolean { + return ( + !import.meta.url.includes('/node_modules/') && + id.includes('/vendor/react-server-dom/') + ) +}