'use strict'; const path = require('path'); module.exports = { name: 'rsc', target: 'node', entry: './src/entry-rsc.js', output: { path: path.resolve(__dirname, 'build'), filename: 'rsc-bundle.js', library: {type: 'commonjs2'}, clean: true, }, resolve: { // This is the key: react-server condition makes `react` resolve to the // server variant that supports async components, server references, etc. conditionNames: ['react-server', 'node', 'require'], extensions: ['.js', '.jsx'], }, module: { rules: [ { // Custom loader that replaces 'use client' modules with client // reference proxies. Must run before babel. enforce: 'pre', test: /\.jsx?$/, exclude: /node_modules/, loader: path.resolve(__dirname, 'rsc-client-ref-loader.js'), }, { test: /\.jsx?$/, exclude: /node_modules/, loader: require.resolve('babel-loader'), options: { presets: [['@babel/preset-react', {runtime: 'automatic'}]], }, }, ], }, // Production mode but no minification — we want optimized code paths // but readable profiles and a fair comparison between approaches. mode: 'production', optimization: {minimize: false}, };