Closed6
TypeScriptアプリケーションでconditional exportsなnpmパッケージを使う
TypeScriptアプリケーションで、npmパッケージのconditional exportsを利用するには、moduleResolution
をnode16
かbundler
にしないといけない
(そもそもexportsもnode16
かbundler
じゃないと考慮されない)
node16
はTS4.7で導入
bundler
は5.0で導入
Nodeのサーバーアプリケーションであれば、node16
にすれば良いので、TS4.7以上にする。
フロントエンドアプリケーションの場合は、ほとんどの場合バンドラ(webpack, vite, etc..)を使ってビルドしており、bundler
が実態に即している。
従ってconditional exportsを使うにはTypeScriptを5.0以上が必要となる。
node
-> bundler
に変えた場合、ビルドは変わらない。
ただしパッケージがexports
を用意している場合は、exports
内のマッチしたtypes
が型解決に使用される。
問題が起きうるのはnpmパッケージ側が定義を誤っていた場合
↓この問題
(実際開発してる業務アプリでTS5.0 &node
-> bundler
変更したら、社内パッケージだけエラーになった、、著名なライブラリであれば正しく対応されていると思うので問題ないと思われる)
このスクラップは2023/09/05にクローズされました