testing - 开玩笑忽略除 1 个包之外的所有 node_modules
问题描述
我正在使用 jest 进行测试,目前我可以忽略 node_modules。然而,问题是 node_modules 中有 1 个包我想用 babel 进行转译。现在我忽略的模式看起来像这样:
testPathIgnorePatterns: ['./node_modules/'],
如果我的包被称为“我的包”,我怎样才能让它 testPathIgnorePatterns 不会在 node_modules 中忽略它?
解决方案
TL;DR - 将此配置键与此正则表达式一起使用:
transformIgnorePatterns: ['/node_modules\/(?!my-package)(.*)']
这是一个两部分的答案。
第1部分
testPathIgnorePatterns
键需要一个字符串/正则表达式数组,所以我可以传递一个正则表达式,它将匹配所有 node_modules,除了我想要的一个,如下所示:
// one way to do it
testpathIgnorePatterns: ['/node_modules\/(?!my-package).+\.js$']
// another way to do it - this regex seems simpler to me
testpathIgnorePatterns: ['/node_modules\/(?!my-package)(.*)']
这基本上是说,忽略除 my-package 之外的所有 node_modules。但是,这里要注意的是,testPathIgnorePatterns
它并不能确定一个模块是否应该被 babel 转译。这个键是用来开玩笑地知道你的测试文件在哪里。基本上,使用这个键,你是在告诉 jest '不要查找node_modules
带有.test.js
扩展名的文件',因为你不想运行导入的 node_module 包的测试。
因此,实际上,您希望完全忽略此设置,因为 jest 会自动将其默认为['/node_modules/']
,或者如果您想添加其他要忽略的路径,您需要:
testpathIgnorePatterns: ['other/file/path', '/node_modules/']
第2部分
鉴于第 1 部分的上下文,放置正则表达式以允许 jest 从 node_modules 转换特定包的正确位置是transformIgnorePatterns
:所以它看起来像这样:
transformIgnorePatterns: ['/node_modules\/(?!my-package)(.*)']
这样,jest 不会转译除“my-package”之外的任何 node_modules 包。我相信上面提到的两个键的默认值都是“node_modules”——意思是,node_modules 在testPath
和transform
推荐阅读
- javascript - Javascript:删除父元素
- python - 测试用户输入直到满足条件
- python - Pytesseract - 输出非常不准确(MAC)
- python - 如何调试 Python Pathos 多处理
- matlab - Matlab:如何枚举从列表中形成对的可能方式
- arrays - 如何避免在 Swift 中连续两次生成相同的随机字符串?
- javascript - VueJS 食谱中关于 Vue 自定义“滚动”指令的快速 Javascript 问题
- android - 无法从 Visual Studio Code 运行新创建的 React Native 项目
- javascript - 为什么只调用一次源?
- sql - 使用同一表 SQL 中的数据更新行