Jest 无法从 npm 链接模块转换导入

Jest fails to transpile import from npm linked module

我有一个包含多个模块的项目(使用 Lerna),我想使用 Jest 进行 运行 测试。但是,当我测试使用共享模块(通过 Lerna 的 npm 链接模块)的代码时,似乎没有正确应用 Babel,并且出现以下错误:

SyntaxError: Unexpected token import

我的项目结构是这样的:

- my-project
|- shared
|- native
|- web

webnative 需要 shared 模块。当我进入 shared 目录和 运行 时,Jest 中的本地测试一切正常。如果我 运行 Jest 在 web 目录中进行测试,只要我包含来自 shared.

的内容,就会出现上述错误

这是一个导致错误的超级简单的测试:

import { util } from 'shared';

it('returns false if not prod', () => {
    expect(util.isProd()).toBe(false);
});

我的 .babelrc 看起来像这样:

{
    "presets": [
        "env",
        "flow",
        "react"
        ],
    "plugins": [
        "flow-react-proptypes",
        "transform-object-rest-spread",
        "transform-class-properties"
    ]
}

我尝试了我能找到的一切,包括:

我不得不在 web 模块的 package.json 中更改 Jest 的 transformIgnorePatterns 配置选项。

{
    "jest": {
        "transformIgnorePatterns": [
            "<rootDir>/node_modules/(?!shared|another)"
        ]
    },
}