@swc/jest
Para acelerar la ejecución de tests de Jest transformando TypeScript y JSX con SWC en lugar de Babel.
Transformador de Jest basado en SWC: alternativa rápida a babel-jest y ts-jest.
Notas y contexto
Qué es
@swc/jest es un transformador para Jest desarrollado por el equipo de SWC, el compilador de JavaScript y TypeScript escrito en Rust. Sustituye a transformadores como babel-jest o ts-jest a la hora de convertir el código de los tests antes de ejecutarlos. Al apoyarse en SWC, transpila TypeScript y JSX de forma mucho más rápida, aunque sin hacer comprobación de tipos.
Para qué sirve
- Acelerar la transformación de archivos TypeScript, JavaScript y JSX en suites de Jest.
- Reemplazar babel-jest o ts-jest cuando la velocidad de los tests es un cuello de botella.
- Ejecutar tests de proyectos React sin necesidad de importar React gracias al runtime automático de JSX.
- Reutilizar la configuración de un archivo .swcrc existente dentro de Jest.
Cuándo usarlo
Es buena opción cuando tienes una suite de tests grande y la fase de transpilación de Jest ralentiza la ejecución. Conviene si no necesitas que el transformador haga type-checking, ya que SWC solo transpila y delega la verificación de tipos a tsc o al IDE. Frente a ts-jest gana en velocidad pero pierde la comprobación de tipos durante los tests; frente a babel-jest evita la cadena de plugins de Babel.
Ejemplo
Instalación de las dependencias necesarias:
pnpm i -D jest @swc/core @swc/jest
Configuración básica en jest.config.js:
module.exports = {
transform: {
'^.+\\.(t|j)sx?$': '@swc/jest',
},
};
Con opciones de SWC para TypeScript y JSX:
module.exports = {
transform: {
'^.+\\.(t|j)sx?$': [
'@swc/jest',
{
jsc: {
target: 'es2021',
parser: {
syntax: 'typescript',
jsx: true,
},
},
},
],
},
};
Puntos clave
- Transformación basada en SWC (Rust), notablemente más veloz que las alternativas basadas en Babel o TypeScript.
- Soporta TypeScript, JavaScript y JSX con un único patrón de transform.
- Carga automáticamente la configuración de .swcrc y permite sobrescribir opciones de jsc, parser y transform.
- Distribuido bajo licencia MIT y publicado en npm como @swc/jest.
Ten en cuenta
No realiza comprobación de tipos: necesitas tsc o el editor para detectar errores de tipado. El repositorio swc-project/jest está archivado desde enero de 2025 y en modo solo lectura; el código se trasladó al monorepo swc-project/pkgs, donde se mantiene el paquete. El paquete @swc/jest en npm sigue operativo, pero las incidencias deben reportarse en el repositorio principal de SWC.