ターゲット

webpackは、複数の環境やターゲット向けにコンパイルできます。targetが具体的に何を意味するのかを理解するには、ターゲットの概念に関するページをご覧ください。

target

string [string] false

webpackに特定の環境向けのランタイムコードを生成するように指示します。webpackのランタイムコードは、ユーザーが記述するコードと同じではないことに注意してください。特定の環境をターゲットにしたい場合は、Babelなどのトランスパイラーでそれらのコードをトランスパイルする必要があります。たとえば、ソースコードにアロー関数があり、バンドルされたコードをES5環境で実行したい場合などです。webpackはtargetが構成されていても自動的にトランスパイルしません。

デフォルトは、'browserslist'、またはbrowserslist構成が見つからない場合は'web'です。

string

次の文字列値は、WebpackOptionsApplyを通じてサポートされています。

オプション説明
async-node[[X].Y]Node.jsのような環境で使用するためにコンパイルします(チャンクを非同期にロードするためにfsvmを使用します)。
electron[[X].Y]-mainElectronのメインプロセス用にコンパイルします。
electron[[X].Y]-rendererブラウザ環境向けのJsonpTemplatePluginFunctionModulePlugin、CommonJSとElectronの組み込みモジュール向けのNodeTargetPluginExternalsPluginを使用するターゲットを提供することで、Electronのレンダラープロセス用にコンパイルします。
electron[[X].Y]-preloadasyncChunkLoadingtrueに設定したNodeTemplatePlugin、ブラウザ環境向けのFunctionModulePlugin、CommonJSとElectronの組み込みモジュール向けのNodeTargetPluginExternalsPluginを使用するターゲットを提供することで、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ブラウザのような環境で使用するためにコンパイルします(デフォルト)
webworkerWebWorkerとしてコンパイルします
esX指定されたECMAScriptバージョン用にコンパイルします。例:es5、es2020。
browserslistbrowserslist構成からプラットフォームとES機能を推測します(browserslist構成が利用可能な場合のデフォルト)

たとえば、target"electron-main"に設定されている場合、webpackは複数のelectron固有の変数を含めます。

nodeまたはelectronのバージョンはオプションで指定できます。これは、上記の表の[[X].Y]で示されます。

webpack.config.js

module.exports = {
  // ...
  target: 'node12.18',
};

ランタイムコードを生成するために使用できるES機能を決定するのに役立ちます(すべてのチャンクとモジュールはランタイムコードでラップされます)。

browserslist

プロジェクトにbrowserslist構成がある場合、webpackはそれを使用して次のことを行います。

  • ランタイムコードを生成するために使用できるES機能を決定します。
  • 環境を推測します(例: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構成と環境を明示的に指定します。

[string]

複数のターゲットが渡された場合、機能の共通サブセットが使用されます。

webpack.config.js

module.exports = {
  // ...
  target: ['web', 'es5'],
};

webpackは、webプラットフォーム用のランタイムコードを生成し、ES5機能のみを使用します。

今のところ、すべてのターゲットを混合できるわけではありません。

webpack.config.js

module.exports = {
  // ...
  target: ['web', 'node'],
};

エラーが発生します。webpackは今のところユニバーサルターゲットをサポートしていません。

false

上記のリストにある定義済みのターゲットのいずれもニーズを満たさない場合は、targetfalseに設定してください。プラグインは適用されません。

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

10 貢献者

juanglsokraskipjackSpaceK33zpastelskytbroadleybyzykEugeneHlushkosmelukovchenxsan