webpackは、複数の環境やターゲット向けにコンパイルできます。targetが具体的に何を意味するのかを理解するには、ターゲットの概念に関するページをご覧ください。
string [string] false
webpackに特定の環境向けのランタイムコードを生成するように指示します。webpackのランタイムコードは、ユーザーが記述するコードと同じではないことに注意してください。特定の環境をターゲットにしたい場合は、Babelなどのトランスパイラーでそれらのコードをトランスパイルする必要があります。たとえば、ソースコードにアロー関数があり、バンドルされたコードをES5環境で実行したい場合などです。webpackはtargetが構成されていても自動的にトランスパイルしません。
デフォルトは、'browserslist'、またはbrowserslist構成が見つからない場合は'web'です。
次の文字列値は、WebpackOptionsApplyを通じてサポートされています。
| オプション | 説明 |
|---|---|
async-node[[X].Y] | Node.jsのような環境で使用するためにコンパイルします(チャンクを非同期にロードするためにfsとvmを使用します)。 |
electron[[X].Y]-main | Electronのメインプロセス用にコンパイルします。 |
electron[[X].Y]-renderer | ブラウザ環境向けのJsonpTemplatePlugin、FunctionModulePlugin、CommonJSとElectronの組み込みモジュール向けのNodeTargetPluginとExternalsPluginを使用するターゲットを提供することで、Electronのレンダラープロセス用にコンパイルします。 |
electron[[X].Y]-preload | asyncChunkLoadingをtrueに設定したNodeTemplatePlugin、ブラウザ環境向けのFunctionModulePlugin、CommonJSとElectronの組み込みモジュール向けのNodeTargetPluginとExternalsPluginを使用するターゲットを提供することで、Electronのレンダラープロセス用にコンパイルします。 |
node[[X].Y] | Node.jsのような環境で使用するためにコンパイルします(チャンクをロードするためにNode.jsのrequireを使用します)。 |
node-webkit[[X].Y] | WebKitで使用するためにコンパイルし、チャンクのロードにJSONPを使用します。組み込みのNode.jsモジュールとnw.guiのインポートを許可します(実験的)。 |
nwjs[[X].Y] | node-webkitと同じです。 |
web | ブラウザのような環境で使用するためにコンパイルします(デフォルト) |
webworker | WebWorkerとしてコンパイルします |
esX | 指定されたECMAScriptバージョン用にコンパイルします。例:es5、es2020。 |
browserslist | browserslist構成からプラットフォームとES機能を推測します(browserslist構成が利用可能な場合のデフォルト) |
たとえば、targetが"electron-main"に設定されている場合、webpackは複数のelectron固有の変数を含めます。
nodeまたはelectronのバージョンはオプションで指定できます。これは、上記の表の[[X].Y]で示されます。
webpack.config.js
module.exports = {
// ...
target: 'node12.18',
};ランタイムコードを生成するために使用できるES機能を決定するのに役立ちます(すべてのチャンクとモジュールはランタイムコードでラップされます)。
プロジェクトにbrowserslist構成がある場合、webpackはそれを使用して次のことを行います。
last 2 node versions は、output.environment設定を使用したtarget: "node"と同じです)。サポートされているbrowserslistの値
browserslist - 自動的に解決されたbrowserslist構成と環境を使用します(最も近いpackage.jsonまたはBROWSERSLIST環境変数から。詳細については、browserslistドキュメントを参照してください)。browserslist:modern - 自動的に解決されたbrowserslist構成からmodern環境を使用します。browserslist:last 2 versions - 明示的なbrowserslistクエリを使用します(構成は無視されます)。browserslist:/path/to/config - browserslist構成を明示的に指定します。browserslist:/path/to/config:modern - browserslist構成と環境を明示的に指定します。複数のターゲットが渡された場合、機能の共通サブセットが使用されます。
webpack.config.js
module.exports = {
// ...
target: ['web', 'es5'],
};webpackは、webプラットフォーム用のランタイムコードを生成し、ES5機能のみを使用します。
今のところ、すべてのターゲットを混合できるわけではありません。
webpack.config.js
module.exports = {
// ...
target: ['web', 'node'],
};エラーが発生します。webpackは今のところユニバーサルターゲットをサポートしていません。
上記のリストにある定義済みのターゲットのいずれもニーズを満たさない場合は、targetをfalseに設定してください。プラグインは適用されません。
webpack.config.js
module.exports = {
// ...
target: false,
};または、必要な特定のプラグインを適用できます。
webpack.config.js
const webpack = require('webpack');
module.exports = {
// ...
target: false,
plugins: [
new webpack.web.JsonpTemplatePlugin(options.output),
new webpack.LoaderTargetPlugin('web'),
],
};ターゲットまたは環境機能に関する情報が提供されていない場合、ES2015が使用されます。