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が使用されます。