jest-esbuild
raw JSON → 0.4.0 verified Mon Apr 27 auth: no javascript maintenance
A Jest transformer that uses esbuild to compile TypeScript/JavaScript files during test execution. Current stable version is 0.4.0, released in 2021 with no recent updates (maintenance mode). It provides fast compilation by leveraging esbuild's speed, significantly faster than ts-jest. It requires Jest 27+ and supports ESM/CJS via esbuild's loader. Key differentiator: minimal configuration and speed compared to ts-jest or babel-jest. Not recommended for projects needing type checking, as esbuild strips types without validation.
Common errors
error TypeError: (0 , _jestEsbuild.createTransformer) is not a function ↓
cause Incorrect import of named export; using default import for createTransformer.
fix
Use require('jest-esbuild').createTransformer or import { createTransformer } from 'jest-esbuild'.
error Error: jest-esbuild: Expected a jest version >= 27 ↓
cause Jest version < 27 is used.
fix
Upgrade Jest to 27 or later.
error SyntaxError: Unexpected token < ↓
cause JSX files not transformed; missing loader configuration.
fix
Add options: { loaders: { '.tsx': 'tsx' } } in transform array.
Warnings
gotcha jest-esbuild does not type-check; it only transforms code. Type errors will be ignored, potentially masking bugs. ↓
fix Run tsc separately or add type checking step in CI.
deprecated jest-esbuild is no longer actively maintained. Consider alternatives like @swc/jest or esbuild-jest. ↓
fix Migrate to @swc/jest (recommended) or esbuild-jest.
gotcha Options for esbuild are not well documented; configuration errors can cause silent failures. ↓
fix Refer to esbuild API docs; use known options like 'loader', 'jsxFactory', 'target'.
breaking Version 0.4.0 changed from default export to named export? (Unconfirmed breaking change anecdotal) ↓
fix If using createTransformer, verify import path; recommended: use string transformer in config.
Install
npm install jest-esbuild yarn add jest-esbuild pnpm add jest-esbuild Imports
- jest-esbuild (default) wrong
transform: { '^.+\\.tsx?$': ['jest-esbuild', {}] }correctmodule.exports = { transform: { '^.+\\.tsx?$': 'jest-esbuild' } } - jest-esbuild (with options) wrong
transform: { '^.+\\.tsx?$': 'jest-esbuild', esbuildOptions: { loaders: { '.js': 'jsx' } } }correctmodule.exports = { transform: { '^.+\\.tsx?$': ['jest-esbuild', { loaders: { '.js': 'jsx' } }] } } - createTransformer (named export) wrong
const createTransformer = require('jest-esbuild');correctconst { createTransformer } = require('jest-esbuild'); module.exports = { transform: { '^.+\\.tsx?$': createTransformer() } };
Quickstart
// Install: npm install -D jest-esbuild
// jest.config.js
module.exports = {
transform: {
'^.+\\.tsx?$': 'jest-esbuild'
}
};
// Example test (sum.test.ts)
const sum = (a: number, b: number) => a + b;
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});