コンパイラ

コンパイラメソッド

run

コンパイルを開始し、コンパイルが完了するか、エラーのために中断されたときにコールバックされます。

run(callback:  (
  error: Error, // Only including compiler-related errors, such as configuration errors, not including compilation errors
  stats: Stats, // detailed information generated during the compilation
) => void): void;
警告

このAPIは一度に1つのコンパイルしかサポートしていません。`compiler.run`のコールバックで`compiler.close`を呼び出し、それが完了するまで待機してから、再度`compiler.run`を実行してください。同時コンパイルは出力ファイルを破損します。

compiler.run((err, stats) => {
  // Deal with the compiler errors
  handlerCompilerError(err);
  // Deal with the compilation errors
  handlerModuleErrors(stats.toJson().errors);
  // Deal with the result
  handleBuildResult(stats);
  // End this compilation
  compiler.close(closeErr => {
    // Start a new compilation
    compiler.run((err, stats) => {});
  });
});

watch

ファイルとディレクトリを監視し、それらが変更された後にコンパイルプロセスを開始し、コンパイルが完了するか、エラーのために中断されるたびにコールバックされます。

watch(
  watchOptions: WatchOptions, // options for starting the watching
  handler: (error: Error, stats: Stats) => void // callback when every compilation ends
): Watching; // watching controller
警告

このAPIは一度に1つのコンパイルしかサポートしていません。`compiler.watch`のコールバックで`compiler.close`を呼び出し、それが完了するまで待機してから、再度`compiler.watch`を実行してください。同時コンパイルは出力ファイルを破損します。

const watching = compiler.watch(
  {
    aggregateTimeout: 300,
    poll: undefined,
  },
  (err, stats) => {
    // Deal with the result
    handleBuildResult(stats);
  },
);

Watchingオブジェクトは以下のメソッドを提供します

  • watch:
    • : (files: string[], dirs: string[], missing: string[]): void
    • 使用方法: 監視する必要のあるファイルとディレクトリを追加します。
  • invalidate:
    • : (callback: () => void): void
    • 使用方法: ワッチャーを停止せずに、現在記録されているファイルの変更で、このラウンドの監視を直ちに終了し、コンパイルを開始します。
  • suspend:
    • : (): void
    • 使用方法: 監視のみの状態になり、新しいコンパイルは開始されません。
  • resume:
    • : (): void
    • 使用方法: 監視のみの状態を終了し、現在記録されているファイルの変更でコンパイルを開始します。
  • close:
    • : (callback: () => void): void
    • 使用方法: ワッチャーを停止します。

compile

コンパイルを作成して実行します。これは、`compiler.run`と`compiler.watch`が依存する基本的なメソッドです。

compile(
  callback: (compilation: Compilation) => void // callback after this compilation
): void

close

現在のコンパイラを閉じ、この期間中にキャッシングなどの低優先度のタスクを処理します。

close(
  callback: (err: Error) => void // callback after closing
): void;

getInfrastructureLogger

任意のコンパイルに関連付けられていないloggerオブジェクトを作成します。これは、グローバルログを出力するために使用されます。

getInfrastructureLogger(name: string): Logger;

getCache

ビルドプロセスでデータを共有するためのキャッシュオブジェクトを作成します。

getCache(name: string): CacheFacade;

purgeInputFileSystem

入力ファイルシステムの読み取りループを停止します。内部的にはタイマーが含まれており、`compiler.close`を呼び出した後もプロセスが終了できない可能性があります。

purgeInputFileSystem(): void;

createChildCompiler

Rspack内でRspackの別のインスタンスを実行できます。ただし、適用される設定と構成が異なる子として実行されます。親(または最上位のコンパイラ)からすべてのフックとプラグインをコピーし、子`Compiler`インスタンスを作成します。作成された`Compiler`を返します。

createChildCompiler(
  compilation: Compilation,
  compilerName: string,
  compilerIndex: number,
  outputOptions: OutputOptions,
  plugins: RspackPlugin[]
): Compiler;

runAsChild

子コンパイラを実行します。これにより、完全なコンパイルが行われ、アセットが生成されます。

runAsChild(
  callback(
    err: Error, // error related to the child compiler
    entries: Chunk[], // chunks generated by the child compiler
    compilation: Compilation, // the compilation created by the child compiler
  ): void;
): void;

isChild

このコンパイラが子コンパイラかどうかを示します。

isChild(): boolean;

コンパイラプロパティ

hooks

詳細はコンパイラフックを参照してください。

rspack

  • 型: typeof rspack

関連する内部オブジェクトを取得するために`@rspack/core`のエクスポートを取得します。これは、`@rspack/core`を直接参照できない場合、または複数のRspackインスタンスが存在する場合に特に役立ちます。

一般的な例としては、Rspackプラグインでsourcesオブジェクトにアクセスすることです。

const { RawSource } = compiler.rspack.sources;
const source = new RawSource('console.log("Hello, world!");');

webpack

  • 型: typeof rspack

`compiler.rspack`と同等です。このプロパティは、Webpackプラグインとの互換性のために使用されます。

開発中のRspackプラグインでWebpackとの互換性が必要な場合は、`compiler.rspack`の代わりにこのプロパティを使用できます。

console.log(compiler.webpack === compiler.rspack); // true

name

  • 型: string

名前を取得します。

  • ルートコンパイラの場合、nameと同等です。
  • 子コンパイラの場合、`createChildCompiler`に渡された値です。
  • MultiCompilerの場合、キーバリュー形式でキーとなります。

context

現在のプロジェクトルートディレクトリ

  • `new Compiler`で作成された場合、渡された値です。
  • `rspack({})`で作成された場合、context設定です。

root

  • 型: Compiler

子コンパイラツリーのルートを取得します。

options

  • 型: RspackOptionsNormalized

このコンパイラで使用される完全なオプションを取得します。

watchMode

  • 型: boolean

`compiler.watch`で開始されたかどうかを示します。

watching

  • 型: Watching

watchingオブジェクトを取得します。詳細はwatchメソッドを参照してください。

running

  • 型: boolean

現在コンパイルが実行中かどうかを示します。

inputFileSystem

  • 型: InputFileSystem

ファイルシステムからの読み取りに使用されるプロキシオブジェクトを取得します。内部的にはキャッシングなどの最適化が含まれており、同じファイルの重複読み取りを削減します。

outputFileSystem

  • 型: OutputFileSystem

ファイルシステムへの書き込みに使用されるプロキシオブジェクトを取得します。デフォルトでは`fs`です。

watchFileSystem

  • 型: WatchFileSystem

ファイルまたはディレクトリの変更を監視するために使用されるプロキシオブジェクトを取得します。このオブジェクトは、監視を開始するためのwatchメソッドを提供し、変更された項目と削除された項目をコールバックに渡します。

MultiCompiler

MultiCompilerモジュールにより、Rspackは複数のコンフィグレーションを個別のコンパイラで実行できます。RspackのJavaScript APIのオプションパラメータがオプションの配列の場合、Rspackは個別のコンパイラを適用し、すべてのコンパイラの実行後にコールバックを呼び出します。

const rspack = require('@rspack/core');

rspack(
  [
    { entry: './index1.js', output: { filename: 'bundle1.js' } },
    { entry: './index2.js', output: { filename: 'bundle2.js' } },
  ],
  (err, stats) => {
    process.stdout.write(stats.toString() + '\n');
  },
);

new MultiCompilerを使用して作成することもできます。

const compiler1 = new Compiler({
  /* */
});
const compiler2 = new Compiler({
  /* */
});

new MultiCompiler([compiler1, compiler2]);

new MultiCompiler([compiler1, compiler2], {
  parallelism: 1, // the maximum number of parallel compilers
});

new MultiCompiler({
  name1: compiler1,
  name2: compiler2,
});

MultiCompilerは、Compilerのいくつかのメソッドと属性も提供します。

MultiCompilerメソッド

setDependencies

コンパイラの依存関係を、compiler.nameを識別子として使用して指定し、コンパイラの実行順序を保証します。

setDependencies(compiler: Compiler, dependencies: string[]): void;

validateDependencies

コンパイラ間の依存関係が有効かどうかをチェックします。循環依存関係または依存関係の欠如がある場合、コールバックがトリガーされます。

validateDependencies(
  callback: (err: Error) => void; // callback when there is an error
): boolean

run

依存関係に従って各コンパイラのrunメソッドを実行し、コンパイルプロセスを開始します。

run(callback: (err: Error, stats: MultiStats) => void): void;

watch

依存関係に従って各コンパイラのwatchメソッドを実行し、監視を開始し、ファイルの変更後にコンパイルプロセスを開始します。

watch(
  watchOptions: WatchOptions,
  handler: (err: Error, stats: MultiStats) => void,
): MultiWatching

close

各コンパイラのcloseメソッドを実行して閉じ、キャッシングなどの低優先度のタスクをこの期間に処理します。

close(callback: (err: Error) => void): void;

purgeInputFileSystem

各コンパイラのpurgeInputFileSystemを実行して、ファイルシステムの読み取りループを停止します。

purgeInputFileSystem(): void;

getInfrastructureLogger

任意のコンパイルに関連付けられていないloggerオブジェクトを作成します。これは、グローバルログを出力するために使用されます。

getInfrastructureLogger(name: string): Logger;

compilers[0].getInfrastructureLogger()と同じです。

MultiCompilerプロパティ

compilers

  • 型: Compiler[]

含まれるすべてのコンパイラを取得します。

options

読み取り専用
  • 型: RspackOptionsNormalized[]

コンパイラで使用される完全なオプションをすべて取得します。

inputFileSystem

書き込み専用
  • 型: InputFileSystem

各コンパイラでファイルシステムからの読み取りに使用されるプロキシオブジェクトを設定します。

outputFileSystem

書き込み専用
  • 型: OutputFileSystem

各コンパイラでファイルシステムへの書き込みに使用されるプロキシオブジェクトを設定します。

watchFileSystem

書き込み専用
  • 型: WatchFileSystem

各コンパイラでファイルまたはディレクトリの変更を監視するために使用されるプロキシオブジェクトを設定します。

running

  • 型: boolean

現在コンパイルが実行中かどうかを示します。