mergeConfig()
mergeConfig() calls mergeConfig from vitest/config and types the result as base & overrides.
Signature
Section titled “Signature”import { mergeConfig } from '@repobuddy/vitest/config/node'
function mergeConfig<D extends Record<string, any>, O extends Record<string, any> | undefined>( base: D, overrides: O, isRoot?: boolean | undefined,): D & OIt is also exported from @repobuddy/vitest/config/browser and @repobuddy/vitest/config.
Arguments
Section titled “Arguments”| Argument | Type | Default | Effect |
|---|---|---|---|
base |
object | required | The config to start from |
overrides |
object or undefined |
required | The config merged on top. Its values win. |
isRoot |
boolean |
true (Vite’s default) |
Passed to Vite’s mergeConfig. Leave it unset when you merge whole configs. |
Output
Section titled “Output”A new object. Neither argument is changed.
Behavior
Section titled “Behavior”- Arrays are concatenated:
baseitems first, thenoverridesitems. - Objects are merged key by key.
- Other values from
overridesreplace values inbase. nullandundefinedvalues inoverridesare skipped, so they do not clear abasevalue.- Passing
undefinedasoverridesreturns a copy ofbase. - Passing a function config throws
Cannot merge config in form of callback.
Examples
Section titled “Examples”mergeConfig( { test: { name: 'base', include: ['a'], testTimeout: 1 } }, { test: { include: ['b'], testTimeout: 2 } },)// { test: { name: 'base', include: ['a', 'b'], testTimeout: 2 } }Extend a shared config in a package:
import { defineConfig } from 'vitest/config'import { mergeConfig } from '@repobuddy/vitest/config/node'import shared from '../../vitest.shared.ts'
export default mergeConfig(shared, defineConfig({ test: { name: 'my-package' } }))