Configuring Jest
The Jest philosophy is to work great by default, but sometimes you just need more configuration power.
It is recommended to define the configuration in a dedicated JavaScript, TypeScript or JSON file. The file will be discovered automatically, if it is named jest.config.js|ts|mjs|cjs|json
. You can use --config
flag to pass an explicit path to the file.
Keep in mind that the resulting configuration object must always be JSON-serializable.
The configuration file should simply export an object:
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
verbose: true,
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
verbose: true,
};
export default config;
Or a function returning an object:
- JavaScript
- TypeScript
/** @returns {Promise<import('jest').Config>} */
module.exports = async () => {
return {
verbose: true,
};
};
import type {Config} from 'jest';
export default async (): Promise<Config> => {
return {
verbose: true,
};
};
To read TypeScript configuration files Jest requires ts-node
. Make sure it is installed in your project.
The configuration also can be stored in a JSON file as a plain object:
{
"bail": 1,
"verbose": true
}
Alternatively Jest's configuration can be defined through the "jest"
key in the package.json
of your project:
{
"name": "my-project",
"jest": {
"verbose": true
}
}
Options
You can retrieve Jest's defaults from jest-config
to extend them if needed:
- JavaScript
- TypeScript
const {defaults} = require('jest-config');
/** @type {import('jest').Config} */
const config = {
moduleFileExtensions: [...defaults.moduleFileExtensions, 'mts', 'cts'],
};
module.exports = config;
import type {Config} from 'jest';
import {defaults} from 'jest-config';
const config: Config = {
moduleFileExtensions: [...defaults.moduleFileExtensions, 'mts'],
};
export default config;