Skip to content

tree-shake改善のため barrel exports を廃止#17

Merged
falworks-dy merged 12 commits into
denkiyagi-forkfrom
improvement/remove-barrel-exports
Jan 13, 2026
Merged

tree-shake改善のため barrel exports を廃止#17
falworks-dy merged 12 commits into
denkiyagi-forkfrom
improvement/remove-barrel-exports

Conversation

@falworks-dy

@falworks-dy falworks-dy commented Jan 8, 2026

Copy link
Copy Markdown

変更概要

直近の変更で、 conditional exports に代表的なエントリーポイント(index.js 等による barrel exports)のみを定義し、個別モジュールの import を禁止する方向に統一した。
しかし、これによってライブラリー利用側の tree-shake がしにくくなる問題があった。また、バンドルせずにNode.jsで実行するケースにおいても、モジュール解決のコストが上がることが予想される。

そのため、逆に従来の index.js 等を経由した re-exports の露出を廃止し、常に個別モジュールを明示指定して import するような利用方法に変更する。

主な変更点

  • package.jsonexports フィールド等を更新
    • dist/es/index.js 等の露出を廃止する代わりに、ユーザーは任意のモジュールを明示指定して直接 import できるように
    • 単一のエントリーポイントではなくなるため、main, module, types フィールドは削除(近年の Node.js では exports フィールドのみで十分)
    • 内部的に dist/es/all.js は残存しているが、これも exports フィールドでは露出しない。all.js はUMDのビルドに必要であり、そしてUMDは本プロジェクトのWeb環境でのテストに使われているため、すぐには完全削除できない状態
  • ソースコードやテストコードの内部においても、全体的に import パスを更新(対象ファイル多数)
    • src/**/index.js を経由した import を避けて、個別モジュールを直接 import するように
    • ts-patch 等(後述)を使わなくてよくなるように、import パスを絶対パス src/... から相対パスに変更

その他

  • dependencies のnpm依存 tslib を削除
    • 古いターゲットへのトランスパイルを念頭に置いたものであり、現在は特に恩恵が無いため
  • devDependencies のnpm依存 ts-patch, typescript-transform-paths を削除
    • 各種importパスを補正するためのものだが、ビルド失敗の要因になることが多いため、これらに依存しないシンプルなimport方法に統一
  • ライブラリーのバージョンを 1.17.1-mod.2026.4 に更新

@falworks-dy falworks-dy merged commit 3d4546e into denkiyagi-fork Jan 13, 2026
4 checks passed
@falworks-dy

Copy link
Copy Markdown
Author

別途承認済みにつきセルフマージ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant