folke / esbuild-runner

⚡️ Super-fast on-the-fly transpilation of modern JS, TypeScript and JSX using esbuild
https://www.npmjs.com/package/esbuild-runner
Apache License 2.0
712 stars 24 forks source link

Fails in jest 28 #59

Closed kyptov closed 1 year ago

kyptov commented 2 years ago

In jest version 28 was changed transform return type https://jestjs.io/docs/upgrading-to-jest28#transformer

I used this patch to bypass the problem

index df993a4..be2603e 100644
--- a/node_modules/esbuild-runner/lib/jest.js
+++ b/node_modules/esbuild-runner/lib/jest.js
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
 var esbuild_1 = require("./esbuild");
 require("./register");
 function process(src, filename) {
-    return (0, esbuild_1.transpile)(src, filename, { type: "transform" });
+    const code = (0, esbuild_1.transpile)(src, filename, { type: 'transform' })
+    return { code }
 }
 exports.default = { process: process };
 //# sourceMappingURL=jest.js.map
johanlajili commented 2 years ago

until this is fixed, I did the following on my project:

// /scripts/patch-esbuild-jest.js
#!/usr/bin/env node
const fs = require('fs');

const file = `
Object.defineProperty(exports, "__esModule", { value: true });
var esbuild_1 = require("./esbuild");
require("./register");
function process(src, filename) {
    return {
        code: (0, esbuild_1.transpile)(src, filename, { type: "transform" })
    }
}
exports.default = { process: process };
`;

fs.writeFileSync('./node_modules/esbuild-runner/lib/jest.js', file);
$ chmod +x /scripts/patch-esbuild-jest.js
//in package.json
{
 "scripts" : {
    "postinstall": "./scripts/patch-esbuild-jest.js",
    [...]
 }
 }