以下は、Rspackとwebpackで一般的に使用される用語です。
アセットとは、アプリケーションで使用されるリソース(画像、フォント、ビデオなど)のことです。通常、出力ディレクトリにファイルとして配置され、base64文字列への変換や出力バンドルへのインライン化など、さらに処理が必要になる場合があります。
「アセットモジュール」とは、画像、フォント、ビデオなどの静的リソースを処理するために使用される特別なモジュールタイプです。
従来、バンドラは「バンドル」と呼ばれる単一の出力ファイルを作成していました。チャンクの概念は、バンドルをオンデマンドでロードできる小さなファイルに自動的に分解する機能の一部として、後に導入されました。
バンドル分割は、コードを複数のバンドルに分割またはマージできる手法です。これは、並列リクエストとブラウザキャッシュの改善に役立ちますが、初期バンドルサイズの削減には使用されません。
バンドルの用語では、チャンクとは、単一のデータファイルに結合されるモジュールのグループです。Rspackは、互いに関連するモジュールをチャンクにバンドルし、対応するファイルを作成します。
チャンクグラフは、チャンク間の関係を表すデータ構造です。これは有向グラフであり、グラフの各ノードはチャンクを表し、各エッジはチャンク間の依存関係を表します。
コード分割は、コードを複数のチャンクに分割し、アプリケーションの実行時に必要なチャンクのみをロードできる手法です。これにより、初期バンドルのサイズを削減し、アプリケーションのロード時間を短縮できます。
Rspackでは、ファーストクラスモジュールタイプとは、ローダーやプラグインに依存せずにサポートできるモジュールタイプ(JavaScript、CSS、JSON、アセットなど)を指します。ただし、TypeScript、HTML、Markdown、YAMLなど、ローダーやプラグインが必要なモジュールタイプは、ファーストクラスシチズンモジュールではありません。
バンドルの用語では、ローダーはプラグインに似ていますが、モジュールコンテンツの変換を特に担当します。たとえば、ローダーを使用してTypeScriptモジュールをJavaScriptモジュールに変換したり、CSSモジュールをページにCSSを挿入するJavaScriptモジュールに変換したりできます。
アプリケーションは、モジュールと呼ばれる複数のファイル(JavaScriptソースファイルや画像やCSSなどのその他のアセット)に分割できます。これらのファイルは、インポートとエクスポートによってモジュールコンテンツを共有および再利用でき、コードを独立した部分に整理し、それらの間の通信のために正式なインターフェースを定義するのに役立ちます。
モジュールのタイプは、バンドラによる解析と処理方法を決定します。たとえば、モジュールタイプをJavaScriptとして指定することで、RspackにモジュールがJavaScriptモジュールであることを伝え、RspackはJavaScriptパーサーを使用してモジュールを解析します。指定されたモジュールタイプがCSSの場合、RspackはCSSパーサーを使用してモジュールを解析します。
モジュール解決とは、モジュール指定子によって示されるファイルパスを計算するプロセスです。たとえば、importステートメントにはモジュール指定子が含まれており、Rspackはモジュール解決アルゴリズムを使用して対応するファイルパスを見つけます。
モジュールグラフは、モジュール間の関係を表すグラフデータ構造です。これは有向グラフであり、グラフの各ノードはモジュールを表し、各エッジはモジュール間の依存関係を表します。
NAPI-RS は、Rustで事前にコンパイルされたNode.jsアドオンを構築するためのフレームワークです。Node-APIに対する高レベルの抽象化を提供することにより、ネイティブNode.jsアドオンの作成と公開のプロセスを簡素化します。
プラグインは、拡張フックを使用してRspackの機能を拡張するために使用できるプログラムモジュールです。ビルドプロセスのカスタマイズやその他のツールとの統合に使用できます。Rspackは、ビルドプロセスをカスタマイズするために使用できる多くのフックを提供しています。
スコープホイスティングとは、可能な限りモジュールを単一のスコープに連結する手法であり、各モジュールを個別の関数でラップするのではなく行います。これにより、ミニファイがより効果的になり、モジュールのルックアップコストを削減することにより、ランタイムのパフォーマンスを向上させることができます。
ツリーシェイキングとは、バンドルから未使用のコードを削除できる手法です。これは、コンパイラのデッドコード削除の一種であり、デッドコードの処理の最小化に重点を置いています。Rspackなどのコンパイラは、コードの静的構造を分析し、未使用のコードを削除することで、これを達成します。