Skip to content

defineConfig

A utility function that provides type-safe configuration for Next.js applications with predefined defaults.

Usage

The defineConfig function provides a type-safe way to configure your Next.js application with smart defaults. It uses deep merging, so you only need to specify the values you want to override.

Basic Usage

next.config.mjs
import { defineConfig } from '@frend-digital/config/next'
export default defineConfig({
// Your custom config here
})

Overriding Defaults

import { defineConfig } from '@frend-digital/config/next'
export default defineConfig({
// Override default transpilePackages
transpilePackages: [
"@my-org/package",
"@another-package"
],
// Add custom configuration
reactStrictMode: true,
experimental: {
serverActions: true
}
})

With Environment Variables

import { defineConfig } from '@frend-digital/config/next'
export default defineConfig({
env: {
API_URL: process.env.API_URL,
FEATURE_FLAG: process.env.FEATURE_FLAG
}
})

API

Function Signature

function defineConfig(config: Partial<NextConfig>): NextConfig

Parameters

  • config (Partial<NextConfig>): A partial Next.js configuration object that will be merged with the default configuration.

Returns

Returns a complete NextConfig object that merges your configuration with the default settings.

Default Configuration

{
// External packages that won't be bundled on the server
serverExternalPackages: ["@hyperdx/node"],
// Packages that will be transpiled
transpilePackages: [
"@frend-digital/centra",
"@frend-digital/next",
"@frend-digital/next-dev-tools",
],
// Image configuration
images: {
loader: "custom",
loaderFile: "./src/image-loader.js",
},
// Webpack configuration to ignore OpenTelemetry warnings
webpack: (config, { isServer }) => {
if (isServer) {
config.ignoreWarnings = [{ module: /opentelemetry/ }];
}
return config;
},
}