プラグイン

もしローダーがファイル変換(プリプロセッシング)の主力であるならば、プラグインはRspackビルドプロセスの全体的な主力です。Rspackのネイティブ実装のほとんどは、プラグインシステムのRust側に依存しています。Nodeユーザーの場合、Rustとの互換性の問題を心配する必要はありません。Rspackが自動的に詳細を処理してくれるからです。プラグインの使用方法に集中できます。使用可能なプラグインを確認してください。

プラグインの使用法

既に互換性のあるwebpack-bundle-analyzerを`rspack.config.js`で使用する例を以下に示します。

rspack.config.js
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');

module.exports = {
  plugins: [new BundleAnalyzerPlugin()],
};

さらに多くのRspackプラグインを探している場合は、サポートされているプラグインの優れたリストをご覧ください。

Rspack互換性テストに合格したWebpackプラグインのリストについては、プラグイン互換性も参照してください。

プラグインの作成

プラグインの構造

プラグイン作成者として、プラグインの構造は非常にシンプルです。`Compiler`インスタンスを受け入れる`apply`メソッドを実装するだけです。これは、Rspackプラグインの初期化時に呼び出されます。詳細なAPIはPlugin APIにあります。

const PLUGIN_NAME = 'MyPlugin';

class MyPlugin {
  apply(compiler) {
    compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
      console.log('The Rspack build process is starting!');
    });
  }
}

module.exports = MyPlugin;

プラグインを`rspack.config.js`で`require`を使用して直接インポートできるように、CommonJSスタイルのモジュールエクスポートを使用します。

TypeScriptによる作成

TypeScriptを使用してRspackプラグインを作成する場合は、`Compiler`と`RspackPluginInstance`をインポートして、プラグインの型を宣言できます。

import type { Compiler, RspackPluginInstance } from '@rspack/core';

const PLUGIN_NAME = 'MyPlugin';

class MyPlugin implements RspackPluginInstance {
  apply(compiler: Compiler) {
    compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
      console.log('The Rspack build process is starting!');
    });
  }
}