Jest的transformIgnorePatterns配置无法转译指定node_modules包原因是什么?
问题原因分析
- Jest的
transformIgnorePatterns配置项规则是:数组中的正则表达式只要有任意一条匹配到文件路径,该文件就会被忽略转译 - 你当前拆分写了两条独立的正则规则,会出现如下冲突:
- 匹配
foo模块时,会命中第二条规则node_modules/(?!(bar)/):该规则的含义是「忽略node_modules下所有不是bar的模块」,foo不符合排除条件,因此被判定为需要忽略 - 匹配
bar模块时,会命中第一条规则node_modules/(?!(foo)/):该规则的含义是「忽略node_modules下所有不是foo的模块」,bar不符合排除条件,因此被判定为需要忽略
- 匹配
- 最终导致foo、bar两个模块都被规则命中,跳过转译
修复方案
把两个需要排除的模块合并到同一条正则规则中即可,修改后的配置如下:
{ "transformIgnorePatterns": [ "node_modules/(?!(foo|bar)/)" ] }
这条规则的含义是:仅忽略node_modules下既不是foo也不是bar的模块,符合你的预期需求。
内容的提问来源于stack exchange,提问作者Andrew Smith
相关产品推荐
相关产品推荐

