JavaScript
Node.js
jest

Jestでaliasなパスでmoduleをimportできるように

問題

Webpack.resolve.aliastsconfigpathsなんかでエイリアスを設定していて、そのソースをJestでテストしようとすると、Jestにそんなモジュールないよと怒られてしまいます。なので、Jestでもエイリアス設定するやり方。

設定

package.jsonjest.moduleNameMapperを設定します。

Jest - moduleNameMapper

package.json
{
  "jest": {
    "moduleNameMapper": {
      "^components/(.+)": "<rootDir>/src/components/$1"
    }
  }
}

キーが正規表現、右がエイリアス。jsのreplaceみたいな感じですね。

"components/button".replace(new RegExp("^components/(.+)"), "<rootDir>/src/components/$1")
// <rootDir>/src/components/button

<rootDir>

これは現在ディレクトリにpackage.jsonがあるなら現在のディレクトリないならprocess.cwd()のパスが入ります。