Jest won't transform node_module dependencies

Viewed 227

Our code references the @myScope/vue-notify library which is set as a external/global in our rollup config. That code is an ES6 module and needs to be transpiled for jest to be able to work with it but by default Jest doesn't transpile node_modules folder. I have tried adding a negative lookahead to the transformIgnorePatterns but no matter what combination I try I just keep getting this error:

Error

My Jest transform settings are as follows:

transform: {
    '.+\\.(css|css!|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$':
        'jest-transform-stub',
    '^.+\\.(js|jsx)?$': 'babel-jest',
},

transformIgnorePatterns: [
    '/node_modules/(?!@myScope/vue-notify)',
    '/dist/',
    '/docs/',
],

My rollup.config.js is as follows:

import packageJson from './package.json';
import json from '@rollup/plugin-json';
import babel from '@rollup/plugin-babel';
import { addMinExtension } from './utils/utils';
import { terser } from 'rollup-plugin-terser';
import { nodeResolve } from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';

const globals = {
    DevExpress: 'DevExpress',
    jquery: '$',
    '@myScope/vue-notify': 'vueNotify',
    'file-saver': 'saveAs',
    exceljs: 'ExcelJS',
};
const externals = ['jquery', '@myScope/vue-notify', 'file-saver', 'exceljs'];

export default [
    {
        // Dev UMD Config:
        input: packageJson.input,
        output: [
            {
                name: packageJson.moduleName,
                file: packageJson.browser,
                format: 'umd',
                globals: globals,
            },
        ],
        external: externals,
        plugins: [
            nodeResolve(),
            commonjs({
                include: 'node_modules/**',
            }),
            json(),
            babel({ babelHelpers: 'runtime' }),
        ],
    },
    {
        // Dev Module Config:
        input: packageJson.input,
        output: [
            {
                file: packageJson.module,
                format: 'es',
            },
        ],
        external: externals,
        plugins: [
            nodeResolve(),
            commonjs({
                include: 'node_modules/**',
            }),
            json(),
        ],
    },
    {
        // Prod UMD Config:
        input: packageJson.input,
        output: [
            {
                name: packageJson.moduleName,
                file: addMinExtension(packageJson.browser),
                format: 'umd',
                sourcemap: true,
                globals: globals,
            },
        ],
        external: externals,
        plugins: [
            nodeResolve(),
            commonjs({
                include: 'node_modules/**',
            }),
            json(),
            babel({ babelHelpers: 'runtime' }),
            terser(),
        ],
    },
    {
        // Prod Module Config:
        input: packageJson.input,
        output: [
            {
                file: addMinExtension(packageJson.module),
                format: 'es',
            },
        ],
        external: externals,
        plugins: [
            nodeResolve(),
            commonjs({
                include: 'node_modules/**',
            }),
            json(),
            terser(),
        ],
    },
];

Any help getting this working would be much appriciated!

0 Answers
Related