The Repodog Jest config.
# terminal
npm install @repodog/jest-config @jest/globals jest suppress-experimental-warnings --save-dev
# terminal
npm install babel-jest --save-dev
# or
npm install @swc/jest --save-dev
// package.json
{
"scripts": {
// esm
"test": "node --require=suppress-experimental-warnings --experimental-vm-modules node_modules/jest/bin/jest.js",
// or cjs
"test": "MODULE_SYSTEM=cjs node node_modules/jest/bin/jest.js"
}
}
// jest.config.cjs
const jestConfig = require('@repodog/jest-config');
module.exports = {
...jestConfig(),
};
// .vscode/launch.json
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Jest - current file",
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
"args": [
"${relativeFile}"
],
"env": {
"DEBUG": "true",
// esm
"NODE_OPTIONS": "--experimental-vm-modules",
// or cjs
"MODULE_SYSTEM": "cjs"
},
"console": "integratedTerminal"
}
]
}
// package.json
{
"scripts": {
// esm
"test": "COMPILER=swc node --require=suppress-experimental-warnings --experimental-vm-modules node_modules/jest/bin/jest.js",
// or cjs
"test": "COMPILER=swc MODULE_SYSTEM=cjs node node_modules/jest/bin/jest.js"
}
}
// jest.config.cjs
const jestConfig = require('@repodog/jest-config');
const swcConfig = require('@repodog/swc-config');
module.exports = {
...jestConfig({ compilerOptions: swcConfig }),
};
// .vscode/launch.json
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Jest - current file",
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
"args": [
"${relativeFile}"
],
"env": {
"DEBUG": "true",
"COMPILER": "swc",
// esm
"NODE_OPTIONS": "--experimental-vm-modules",
// or cjs
"MODULE_SYSTEM": "cjs"
},
"console": "integratedTerminal"
}
]
}
Uses either Babel or SWC to compile code for Jest. Default 'babel'
.
Sets the module sytem to either ESModules or commonjs. Default 'esm'
.
Changes testMatch
to cover all test files and disables the Jest timeout. These are useful to set when debugging a file in IDE. Default 'false'
.
When set to 'web'
, adds regexes to moduleNameMapper
and transform
to cater for .css
and other file extensions Jest cannot resolve. Default 'node'
.