Transform node_modules in Jest

JavaScript

默认情况下,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 引用也会被正确的处理。

两种方案没有优劣,主要是看使用的场景。