問題タブ [tree-shaking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
3747 参照

reactjs - ライブラリを webpack で真にツリー シェイキング可能にするにはどうすればよいですか?

複数の反応コンポーネントのライブラリがあり、ライブラリをツリーシェイキング可能にして、次のようなコンポーネントをインポートしたときに

バンドル全体をインポートしません。

私のindex.jsは次のようになります

そして、webpackを使用してバンドルします

そしてもちろん、私のbabel設定には

このセットアップでは、1 つのコンポーネントのみをインポートすると、バンドル全体が含まれます (インポートするときにも webpack を使用しています)。これを防ぐにはどうすればよいですか?

0 投票する
2 に答える
38 参照

javascript - インポートのインポートからコードを持ち込むことを避ける

webpack バンドルを小さくする演習を行っています。webpack のバンドル アナライザーを使用すると、一度しか使用されていないにもかかわらず、非常に重いパッケージが 2 つの異なる非同期チャンクに含まれていることがわかりました。コードを掘り下げた後、おそらく次のシナリオが原因であることがわかりました。

file1.js

file2.js

file3.js

file1 は重いパッケージをグローバルにインポートし、file2 は file1 から関数をインポートするため、実際にパッケージを使用している関数をインポートしていなくても、依存関係として重いパッケージを取得すると想定しています。それが使用されている唯一の場所であるため、file3 のチャンクだけに大きな依存関係が含まれていることを期待します (むしろ、希望します)。

このようなインポートを処理する特定の方法はありますか? おそらく、これを支援するためにwebpackでできる魔法の構成、モジュール/関数を構造化するより良い方法、または関数/モジュール/パッケージをインポートするより良い方法ですか?

私はwebpack 4を使用しており、ES2017を使用しています