モジュールタイプ
Webバンドラとして、rolldownはJavaScriptファイルだけでなく、CSS(将来)、JSON、dataurlなどの他のタイプの入力項目も受け付けるべきです。
したがって、追加のプラグインなしでrolldownによって入力項目が認識できる場合、この入力項目のタイプはrolldownによってファーストクラスシチズンとして扱われていることを意味します。
これらのファーストクラスのタイプをモジュールタイプと呼びます。
ユーザーに影響がある点
ほとんどのシナリオでは、ユーザーはこのコンセプトを考慮する必要はありません。rolldownがユーザーに代わって自動的に処理するからです。
Rolldownはファイルの拡張子を使用してモジュールタイプを決定しますが、場合によっては不十分です。たとえば、ファイルにJSONデータが含まれているが、拡張子が.dataである場合。この場合、rolldownは拡張子が.jsonでないため、JSONファイルとして認識できません。
この場合、ユーザーはrolldown.config.mjsでmoduleTypesフィールドを設定して、.data拡張子に対するモジュールタイプをrolldownに伝える必要があります。
export default {
moduleTypes: {
'.data': 'json',
},
}プラグイン
プラグイン作成者は読み込みフックや変換フックなど、多くの場所でファイルのモジュールタイプも指定できます。
モジュールタイプはプラグインが従うべき公式の規則を作成し、独立したプラグインが一定のタイプのファイルを統一された方法で処理でき、他のプラグインの詳細を考慮する必要がなくなります。
たとえば、viteは.vueファイルに対して仮想cssモジュールを作成し、仮想モジュールのIDに?lang=cssを追加して、これらのモジュールがvueプラグインによってcssモジュールとして認識されるようにします。しかし、これはvueプラグインのみの規則であり、他のプラグインは従わない可能性があります。
現在、モジュールタイプを使用すると、viteは仮想cssモジュールのモジュールタイプをcssとして指定でき、postcssプラグインなどの他のプラグインはvueプラグインの詳細を知らなくてもこれらのcssモジュールを処理できます。
モジュールタイプのもう1つの機能は、プラグインによる新しいタイプのファイルのサポートが容易になることです。たとえば、.jsoncファイルのサポートを追加するために、プラグインは単に読み込みフックで.jsoncファイルのコメントを削除し、モジュールタイプをjsonとして指定するだけです。Rolldownが処理を行います。