ローダーは、モジュールのソースコードに適用される変換です。ファイルの `import` または「ロード」時にファイルを前処理することができます。そのため、ローダーは他のビルドツールにおける「タスク」のようなものであり、フロントエンドのビルドステップを処理するための強力な方法を提供します。ローダーは、異なる言語(TypeScript など)のファイルを JavaScript に変換したり、インライン画像をデータ URL としてロードしたりできます。ローダーを使用すると、JavaScript モジュールから CSS ファイルを直接 `import` することさえできます!
たとえば、ローダーを使用して、webpack に CSS ファイルをロードしたり、TypeScript を JavaScript に変換したりするように指示できます。そのためには、まず必要なローダーをインストールします
npm install --save-dev css-loader ts-loader
次に、webpack に対して、すべての `.css` ファイルに `css-loader` を、すべての `.ts` ファイルに `ts-loader` を使用するように指示します
webpack.config.js
module.exports = {
module: {
rules: [
{ test: /\.css$/, use: 'css-loader' },
{ test: /\.ts$/, use: 'ts-loader' },
],
},
};
アプリケーションでローダーを使用するには、2 つの方法があります
webpack v4 では CLI からローダーを使用できましたが、この機能は webpack v5 で非推奨になりました。
`module.rules` を使用すると、webpack 設定内で複数のローダーを指定できます。これはローダーを表示するための簡潔な方法であり、クリーンなコードを維持するのに役立ちます。また、それぞれのローダーの全体像も把握できます。
ローダーは、右から左(または下から上)に評価/実行されます。以下の例では、sass-loader から実行が開始され、css-loader、最後に style-loader と続きます。ローダーの順序の詳細については、「ローダーの機能」 を参照してください。
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: [
{ loader: 'style-loader' },
{
loader: 'css-loader',
options: {
modules: true,
},
},
{ loader: 'sass-loader' },
],
},
],
},
};
`import` ステートメント、または任意の 同等の「インポート」メソッド でローダーを指定できます。`!` でローダーとリソースを区切ります。各部分は現在のディレクトリを基準にして解決されます。
import Styles from 'style-loader!css-loader?modules!./styles.css';
インライン `import` ステートメントにプレフィックスを付けることで、設定 からのローダー、preLoaders、postLoaders をオーバーライドできます
`!` をプレフィックスに付けると、設定されているすべての通常のローダーが無効になります
import Styles from '!style-loader!css-loader?modules!./styles.css';
`!!` をプレフィックスに付けると、設定されているすべてのローダー (preLoaders、ローダー、postLoaders) が無効になります
import Styles from '!!style-loader!css-loader?modules!./styles.css';
`-!` をプレフィックスに付けると、設定されているすべての preLoaders とローダーが無効になりますが、postLoaders は無効になりません
import Styles from '-!style-loader!css-loader?modules!./styles.css';
オプションは、クエリパラメータ (例: `?key=value&foo=bar`) または JSON オブジェクト (例: `?{"key":"value","foo":"bar"}`) で渡すことができます。
ローダーは、前処理関数を通じて出力をカスタマイズする方法を提供します。ユーザーは、圧縮、パッケージ化、言語翻訳など、よりきめ細かいロジックを含めるための柔軟性を高めることができます。詳細
ローダーは標準の モジュール解決 に従います。ほとんどの場合、モジュールパス ( `npm install`、`node_modules` など) からロードされます。
ローダーモジュールは関数をエクスポートし、Node.js 互換の JavaScript で記述されることが期待されます。それらは通常 npm で管理されますが、アプリケーション内のファイルとしてカスタムローダーを持つこともできます。慣例により、ローダーの名前は通常 `xxx-loader` です (例: `json-loader`)。詳細は "ローダーの作成" を参照してください。