Skip to content

Latest commit

 

History

History
77 lines (63 loc) · 1.84 KB

esm-support.md

File metadata and controls

77 lines (63 loc) · 1.84 KB
id title
esm-support
ESM Support

To use jest-preset-angular with ESM support, you'll first need to check ESM Jest documentation.

jest-preset-angular supports ESM via a ts-jest config option useESM in combination with jest config option extensionsToTreatAsEsm.

There is also a preset to work with ESM.

Examples

Manual configuration

// jest.config.js
module.exports = {
  // [...]
  extensionsToTreatAsEsm: ['.ts'],
  globals: {
    'ts-jest': {
      tsconfig: '<rootDir>/tsconfig.spec.json',
      stringifyContentPathRegex: '\\.html$',
      useESM: true,
    },
  },
};
// OR package.json
{
  // [...]
  "jest": {
    "extensionsToTreatAsEsm": [".ts"],
    "globals": {
      "ts-jest": {
        "tsconfig": "<rootDir>/tsconfig.spec.json",
        "stringifyContentPathRegex": "\\.html$",
        "useESM": true
      }
    }
  }
}

Use ESM presets

// jest.config.js
module.exports = {
  // [...]
  preset: 'jest-preset-angular/presets/default-esm',
};
// OR package.json
{
  // [...]
  "jest": {
    "preset": "jest-preset-angular/presets/default-esm"
  }
}

:::tip

Jest will attempt to load ESM files from node_modules with default jest-resolve which usually works for most of the cases. However, there are cases like Angular libraries ESM built files or ESM files which are outside node_modules might not be loaded correctly.

To fix that, one can use moduleNameMapper in jest config to instruct Jest to load the correct ESM files or create a custom Jest resolver.

:::