ツリーシェイキング
バンドラの最適化の一つで、使われていないコードを最終的なバンドルから取り除く。用語はRollup(Rich Harris、2015年)に由来する。静的解析が必要なため、ESモジュールでしか機能しない。
ESモジュール以前のCommonJSでは不可能だった。require() が動的だからだ。ESの import/export は静的に解析できる。バンドラは依存グラフを作り、未使用のコードに印を付けて落とす。package.jsonの sideEffects: false は「このパッケージに副作用はないので自由に削ってよい」というバンドラへの宣言だ。lodash-esとlodashの違いが定番の例である。現在ではVite、Rollup、esbuild、Bunのいずれもツリーシェイキングを行い、Webpackも mode: 'production' で行う。