--- title: Configuration sort: 140 section-id: getting-started keywords: configuration, velox.config.ts, settings, options, defineConfig description: Complete reference for velox.config.ts and all available configuration options language: en --- # Configuration Velox is configured through a single `velox.config.ts` file at the root of your project. This file is evaluated at build time (and at dev-server startup) to determine how Velox should compile and serve your application. ## Creating the Config File If you used `create-velox` to scaffold your project, a `velox.config.ts` is generated for you. To create one manually: ```typescript import { defineConfig } from 'velox'; export default defineConfig({ // options go here }); ``` `defineConfig` is a helper that provides full TypeScript type inference over the configuration object — use it rather than exporting a plain object. ## Top-Level Options ### `app` General application metadata. ```typescript app: { name: string; // used in HTML and meta tags baseUrl: string; // canonical base URL (e.g. https://example.com) defaultLocale?: string; // default locale for i18n (default: 'en') trailingSlash?: boolean; // append trailing slash to all routes (default: false) } ``` Example: ```typescript app: { name: 'My Velox App', baseUrl: process.env.PUBLIC_BASE_URL ?? 'http://localhost:3700', defaultLocale: 'en', trailingSlash: false, }, ``` ### `server` Development and production server settings. ```typescript server: { port?: number; // dev server port (default: 3700) host?: string; // bind address (default: 'localhost') https?: { // enable HTTPS for the dev server cert: string; // path to certificate file key: string; // path to key file }; cors?: { origin: string | string[] | '*'; credentials?: boolean; methods?: string[]; }; } ``` ### `build` Build system options. ```typescript build: { target: 'node' | 'edge' | 'static'; // deployment target outDir?: string; // output directory (default: '.velox/output') sourcemap?: boolean | 'external'; // generate source maps minify?: boolean; // minify output (default: true in production) splitting?: boolean; // enable code splitting (default: true) analyze?: boolean; // emit a bundle analysis report prerender?: string[]; // explicit list of routes to pre-render } ``` ### `routes` Fine-grained routing options. ```typescript routes: { dir?: string; // routes directory (default: 'routes') extensions?: string[]; // file extensions treated as routes // default: ['.velox', '.tsx', '.ts'] exclude?: string[]; // glob patterns to exclude } ``` ### `assets` Asset handling and optimisation. ```typescript assets: { publicDir?: string; // static assets directory (default: 'public') imageOptimisation?: { enabled: boolean; formats?: ('webp' | 'avif')[]; quality?: number; // 1–100, default 80 }; fonts?: { preload?: boolean; subsets?: string[]; }; } ``` ### `css` Stylesheet handling. ```typescript css: { modules?: { localsConvention?: 'camelCase' | 'camelCaseOnly' | 'dashes'; generateScopedName?: string; }; preprocessors?: { sass?: boolean; // enable Sass (requires @velox/sass) less?: boolean; stylus?: boolean; }; postcss?: { plugins?: any[]; }; } ``` ### `plugins` The plugin array lets you extend Velox with first-party and community plugins. ```typescript import { defineConfig } from 'velox'; import { veloxMDX } from '@velox/mdx'; import { veloxSass } from '@velox/sass'; import { veloxPWA } from '@velox/pwa'; export default defineConfig({ plugins: [ veloxMDX(), veloxSass(), veloxPWA({ name: 'My App', themeColor: '#3a7bd5', }), ], }); ``` ### `experimental` Opt-in to experimental features that are not yet stable. ```typescript experimental: { viewTransitions?: boolean; // CSS View Transitions API support partialHydration?: boolean; // fine-grained component hydration reactCompat?: boolean; // React component compatibility shim } ``` ## Environment-Specific Configuration You can provide environment-specific overrides: ```typescript import { defineConfig } from 'velox'; export default defineConfig({ app: { name: 'My App', baseUrl: process.env.PUBLIC_BASE_URL!, }, server: { port: parseInt(process.env.PORT ?? '3700'), }, build: { target: process.env.VELOX_TARGET as 'node' | 'edge' ?? 'node', sourcemap: process.env.NODE_ENV !== 'production', }, }); ``` ## Per-Route Rendering Configuration You can override the rendering mode for individual routes from within the route file: ```typescript // routes/dashboard.velox server block export const config = { render: 'ssr', // 'ssr' | 'ssg' | 'isr' | 'csr' revalidate: 60, // ISR: revalidate every 60 seconds edge: true, // run on edge runtime }; ``` ## Full Example A production-ready `velox.config.ts` for a large application: ```typescript import { defineConfig } from 'velox'; import { veloxMDX } from '@velox/mdx'; export default defineConfig({ app: { name: 'Acme Corp', baseUrl: process.env.PUBLIC_BASE_URL!, defaultLocale: 'en', }, server: { port: 3700, cors: { origin: process.env.ALLOWED_ORIGINS?.split(',') ?? '*', credentials: true, }, }, build: { target: 'edge', sourcemap: 'external', analyze: process.env.ANALYZE === '1', }, assets: { imageOptimisation: { enabled: true, formats: ['webp', 'avif'], quality: 85, }, }, plugins: [veloxMDX()], }); ``` For the complete type definitions, see the [Config API](api-config.md) reference.