OSSにちょっとだけ恩返しした話
ホントにちょっとだけ。
tsconfig.json
のcompilerOptions.paths
TypeScriptではtsconfig.json
という設定ファイルで様々な設定ができますが、その中にpaths
という項目があります。
モジュールロード時のプロジェクト内ディレクトリマッピングを設定するものですが、詳しくはここらへんやここらへんを参照してください。
Jestで使う
JestはJavaScriptのテストプラットフォームですが、ts-jestを利用してTypeScriptも使えます。
TypeScript + Jestを使った開発を行なっていたのですが、paths
を使い始めた時にJestがpaths
を認識しなくて困ったことがありました。
Jestにも設定があり、paths
に相当するmoduleNameMapper
という項目があるので、これを設定すればいいのですが、同じ設定を複数箇所に書くのは好ましくありません。
どうにかならないものか・・・と思っていたところ、同じことを考えた人がいて、ライブラリとして公開してくれていました。
それがtsconfig-paths-jestです。
名前の通り、tsconfig
からpaths
の設定を拾ってJestのmoduleNameMapper
にしてくれるものです。
これで解決、したかに思えました。
暗転
ところが、なぜかプロジェクトのコード以外の箇所でエラーが発生する事態に。
結構時間取られてしまったのですが、ようやく分かったのが、tsconfig-paths-jest
が作ってくれるマッピングがマズイということ。
解決・・・?
ローカルで修正することも考えたのですが、同じ問題でハマる人もいるかも知れないので、Issueを作成しつつ、修正プルリクを出しました。
ところが、すぐに別の方法を発見しました。
なんとts-jestに同様のもの(pathsToModuleNameMapper
)があったのです。
tsconfig-paths-jest
のオーナーの方も
Thank you for letting me know. I guess we should use pathsToModuleNameMapper rather than this module.
(教えてくれてありがとう。このモジュールを使うよりpathsToModuleNameMapperを使った方がよさそうだね)
とのコメント。
そこに別の方が
Yeah, ts-jest added a helper for this in v23, I'm still on v22 for another issue
(そう、ts-jestがこのためのヘルパー(pathsToModuleNameMapperのこと)をバージョン23から追加したんだ。僕は別の問題があって、まだバージョン22を使ってるんだ)
そうなのです。理由があって古いバージョンのts-jestを使わなくてはいけない人にとっては、tsconfig-paths-jest
は有用なツールで、僕の修正が役に立ったのです。
コミュニティ万歳。
その後、利用していた別のライブラリにも不具合報告して、PRを出してマージしてもらいました。
Author And Source
この問題について(OSSにちょっとだけ恩返しした話), 我々は、より多くの情報をここで見つけました https://qiita.com/sakai-y/items/9e25d3230b25de87979e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .