默认情况下,Jest 配置文件中的 transform
属性,是不会被应用到 node_modules 目录下的。如果引用的库本身使用了非 JavaScript 文件(比如 CSS 文件),会造成 Jest 无法正确处理。
一个可行的替代方案,是用 moduleNameMapper
来代替 transform
的功能。
以 CSS 的处理为例:
{
// ...
transform: {
"^.+\\.(less|css)$": "jest-transform-stub"
},
// ...
}
上面这个是常规方案,但是对 CSS / Less 的处理不包含 node_modules 的部分。
{
// ...
moduleNameMapper: {
"^.+\\.(less|css)$": "jest-transform-stub"
},
// ...
}
上面这个方案,可以达到一样的效果,但是 node_module 内的 CSS 引用也会被正确的处理。
两种方案没有优劣,主要是看使用的场景。