3.1.0 • Published 3 years ago
rollup-jest v3.1.0
rollup-jest
Rollup preprocessor for Jest.
Install
npm install rollup-jest rollup --save-devUsage
Add preset to Jest config:
{
  "jest": {
    "preset": "rollup-jest"
  }
}
// alternatively, specifying the files to transform:
{
  "jest": {
    "transform": {
      "\\.m?js$": "rollup-jest"
    },
  }
}
// or with options:
// the preset enables sourcemaps by default
{
  "jest": {
    "transform": {
      "\\.m?js$": ["rollup-jest", {"output": {"sourcemap": true}}]
    },
  }
}Write your tests with ES modules:
import path from 'path'
test('parses extname', () => {
  expect(path.extname('foo.md')).toBe('.md')
})Happy testing!
Configuration
Use configFile field
NOTE: To use ESM format configFile in Rollup v3, you should add --experimental-vm-module flag to run jest,eg. NODE_OPTIONS=--experimental-vm-modules npm run test
{
  "jest": {
    "transform": {
      "\\.js$": ["rollup-jest", {"configFile": "./rollup.config.js"}]
    }
  }
}rollup.config.js:
import inject from '@rollup/plugin-inject'
let config = {}
if (process.env.NODE_ENV === 'test') {
  config = {
    plugins: [inject({React: 'react'})],
  }
}
export default configUse inline config
{
  "jest": {
    "transform": {
      "\\.js$": [
        "rollup-jest",
        {"plugins": [["@rollup/plugin-inject", {"React": "react"}]]}
      ]
    }
  }
}All options
- useCache: boolean: Default- true. Enable caching of entry module. This can mess with plugins (e.g. typescript).
- resolveImports: 'relative' | boolean: Default- false. Resolve (bundle) imports, either all (incl. packages) or only relative files.
- args: any: If your config file exports a function, you can use this field to pass arguments that aren't supported in rollup's- inputOptions.
- plugins: Plugin[]: Gets merged with plugins from config file. Special syntax- [name, options]allows you to specify the plugin in json without- require.