Overview
The defineDevConfig function provides a unified configuration interface for the Resolid development server, integrating with React Router and Vite.
Function: defineDevConfig()
Defines configuration for the development server and build process.
function defineDevConfig(options?: DevConfigOptions): DevConfig
Configuration options for development
options.platform
ServerPlatform
default:"'node'"
Target deployment platform: 'node', 'vercel', or 'netlify'
Target Node.js version for the build
options.entryFile
string
default:"'server.ts'"
Server entry file path
Application source directory
Additional files to include in the build
options.reactRouterConfig
ReactRouterConfig
default:"{}"
React Router configuration options
Patterns to exclude from development mode processing
Configuration object containing Vite plugin options and React Router config
Configuration Options
Specify the target deployment platform:
import { defineDevConfig } from '@resolid/dev';
export default defineDevConfig({
platform: 'node' // or 'vercel' | 'netlify'
});
Each platform applies specific optimizations and configurations:
- node: Standard Node.js server
- vercel: Vercel serverless functions
- netlify: Netlify serverless functions
Node Version
Set the target Node.js version:
export default defineDevConfig({
nodeVersion: 20 // or 18, 22
});
Entry File
Specify the server entry file:
export default defineDevConfig({
entryFile: 'server.ts' // or 'src/server/index.ts'
});
App Directory
Define the application source directory:
export default defineDevConfig({
appDirectory: 'src' // or 'app'
});
Include Files
Add additional files to include in the build:
export default defineDevConfig({
includeFiles: [
'package.json',
'drizzle.config.ts',
'.env.production'
]
});
React Router Config
Pass additional React Router configuration:
export default defineDevConfig({
reactRouterConfig: {
basename: '/app',
buildDirectory: 'build',
publicPath: '/public',
serverBuildFile: 'index.js'
}
});
Dev Exclude
Exclude patterns from development processing:
export default defineDevConfig({
devExclude: [
/node_modules/,
'dist',
'.cache'
]
});
Type Definitions
DevConfigOptions
type DevConfigOptions = Partial<VitePluginOptions> & {
appDirectory?: string;
includeFiles?: string[];
reactRouterConfig?: ReactRouterConfig;
}
VitePluginOptions
interface VitePluginOptions {
platform: ServerPlatform;
nodeVersion: NodeVersion;
entryFile: string;
devExclude?: (string | RegExp)[];
}
type ServerPlatform = 'node' | 'vercel' | 'netlify';
NodeVersion
type NodeVersion = 18 | 20 | 22;
DevConfig
interface DevConfig {
vitePluginOptions: VitePluginOptions;
reactRouterConfig: Config;
}
ReactRouterConfig
type ReactRouterConfig = Omit<Config, 'appDirectory' | 'ssr' | 'serverModuleFormat' | 'future'> & {
future?: Omit<
Config['future'],
'v8_middleware' | 'v8_splitRouteModules' | 'v8_viteEnvironmentApi'
>;
}
Usage in react-router.config.ts
import { defineDevConfig } from '@resolid/dev';
import type { Config } from '@react-router/dev/config';
export default defineDevConfig({
platform: 'node',
nodeVersion: 22,
entryFile: 'server.ts',
appDirectory: 'src',
reactRouterConfig: {
basename: process.env.BASE_URL || '/',
buildDirectory: 'build'
}
}) satisfies Config;
Each platform comes with a preset that configures:
- Build output format
- Server bundle configuration
- Asset handling
- Environment variables
Node Preset
export default defineDevConfig({
platform: 'node',
nodeVersion: 22
});
Configures for standard Node.js deployment with:
- ESM module format
- Optimized dependencies
- Static file serving
Vercel Preset
export default defineDevConfig({
platform: 'vercel',
nodeVersion: 20
});
Configures for Vercel deployment with:
- Serverless function output
- Edge runtime compatibility
- Vercel-specific optimizations
Netlify Preset
export default defineDevConfig({
platform: 'netlify',
nodeVersion: 20
});
Configures for Netlify deployment with:
- Netlify Functions format
- Build plugin integration
- Netlify-specific optimizations
Complete Example
import { defineDevConfig } from '@resolid/dev';
import type { Config } from '@react-router/dev/config';
export default defineDevConfig({
// Deployment platform
platform: process.env.PLATFORM || 'node',
// Node.js version
nodeVersion: 22,
// Server entry point
entryFile: 'server.ts',
// App directory
appDirectory: 'src',
// Additional files to include
includeFiles: [
'package.json',
'drizzle.config.ts'
],
// Exclude from dev processing
devExclude: [
/node_modules/,
'dist',
'build'
],
// React Router configuration
reactRouterConfig: {
basename: '/',
buildDirectory: 'build',
publicPath: '/public',
serverBuildFile: 'index.js'
}
}) satisfies Config;
Source Code
Location: packages/dev/src/config/index.ts