Giter VIP home page Giter VIP logo

Comments (5)

kdy1 avatar kdy1 commented on June 9, 2024 1

I'll take a look soon.

from jest.

kdy1 avatar kdy1 commented on June 9, 2024 1

Fixed with the new version of @swc/jest.
You can use v0.2.0 to do this.

from jest.

buschtoens avatar buschtoens commented on June 9, 2024

This is now actually a major blocker for using ESM in jest (jestjs/jest#9430).

When I comment out the line that forces commonjs:

jest/index.ts

Line 48 in 9d81a9a

set(swcOptions, 'module.type', 'commonjs')

And use these configs:

// jest.config.js
/** @type {import('@jest/types').Config.InitialOptions} */
module.exports = {
  // testEnvironment: 'jsdom', // Irrelevant for the bug. Enable at will.
  transform: {
    '^.+\\.tsx?$': '@swc/jest'
  },
  extensionsToTreatAsEsm: ['.ts']
};
// .swcrc
{
  "sourceMaps": true,
  "jsc": {
    "parser": {
      "syntax": "typescript",
      "tsx": true, // Might as well be false, if not transpiling `.tsx`.
      "decorators": false,
      "dynamicImport": true // Required.
    },
    "target": "es2020",
    "loose": true
  }
}

ESM and jest work just fine, with the limitations noted in the tracking issue: jestjs/jest#9430

from jest.

buschtoens avatar buschtoens commented on June 9, 2024

Much appreciated! Thank you. 💖

What do you think a good long-term plan would be for the config patching? AFAICT, these options are crucial when wanting to use TypeScript & ESM with jest:

{
  "sourceMaps": true,         // Important
  "jsc": {
    "parser": {
      "syntax": "typescript", // Important
      "tsx": true,            // Depending on whether `.tsx` is targeted as well.
      // "decorators": false,
      "dynamicImport": true   // Important.
    },
    "target": "es2020"        // I think that was important for dynamic import stuff.
  },
  "module": null              // Important
}
{
  transform: {
    '^.+\\.tsx?$': '@swc/jest'
  },
  extensionsToTreatAsEsm: ['.ts', '.tsx']
}

It would be nice, if these options could eventually be applied correctly out-of-the-box.

from jest.

kdy1 avatar kdy1 commented on June 9, 2024
{
  "sourceMaps": true,         // Maybe this should be true by default.
  "jsc": {
    "parser": {
      "syntax": "typescript", // Should be specified, because jest can be used with non-ts codes.
      "tsx": true,            // Making this true will just work, if it's accepted by tsc
      // "decorators": false,
      "dynamicImport": true   // If this is required by jest? If so, it should be default
    },
    "target": "es2020"        // Not important for dynamic imports.
  },
  "module": null              // This is null by default
}

from jest.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.