Skip to main content

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
options
DevConfigOptions
Configuration options for development
options.platform
ServerPlatform
default:"'node'"
Target deployment platform: 'node', 'vercel', or 'netlify'
options.nodeVersion
NodeVersion
default:"22"
Target Node.js version for the build
options.entryFile
string
default:"'server.ts'"
Server entry file path
options.appDirectory
string
default:"'src'"
Application source directory
options.includeFiles
string[]
default:"[]"
Additional files to include in the build
options.reactRouterConfig
ReactRouterConfig
default:"{}"
React Router configuration options
options.devExclude
(string | RegExp)[]
Patterns to exclude from development mode processing
return
DevConfig
Configuration object containing Vite plugin options and React Router config

Configuration Options

Platform

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)[];
}

ServerPlatform

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;

Platform Presets

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

Build docs developers (and LLMs) love