この設定を適切に使用し、より簡単に配布するために、webpackはwebpack.config.js
で設定できます。CLIに送信されるすべてのパラメータは、設定ファイル内の対応するパラメータにマップされます。
まだwebpackとCLIをインストールしていない場合は、インストールガイドをお読みください。
webpack-cliは、webpackの操作を簡単にするためのさまざまなコマンドを提供します。デフォルトでは、webpackには以下が同梱されています。
コマンド | 使い方 | 説明 |
---|---|---|
build | build|bundle|b [エントリ...] [オプション] | webpackを実行します(デフォルトコマンド、省略可能)。 |
configtest | configtest|t [設定パス] | webpack設定を検証します。 |
help | help|h [コマンド] [オプション] | コマンドとオプションのヘルプを表示します。 |
info | info|i [オプション] | システムに関する情報を出力します。 |
init | init|create|c|new|n [生成パス] [オプション] | 新しいwebpackプロジェクトを初期化します。 |
loader | loader|l [出力パス] [オプション] | ローダーをスキャフォールディングします。 |
plugin | plugin|p [出力パス] [オプション] | プラグインをスキャフォールディングします。 |
serve | serve|server|s [オプション] | webpack-dev-server を実行します。 |
version | version|v [コマンド...] | webpack 、webpack-cli 、およびwebpack-dev-server のバージョン番号を出力します。 |
watch | watch|w [エントリ...] [オプション] | webpackを実行し、ファイルの変更を監視します。 |
webpackを実行します(デフォルトコマンド、省略可能)。
npx webpack build [options]
例
npx webpack build --config ./webpack.config.js --stats verbose
新しいwebpackプロジェクトを初期化するために使用されます。
npx webpack init [generation-path] [options]
例
npx webpack init ./my-app --force --template=default
設定を生成する場所。デフォルトはprocess.cwd()
です。
-t
、--template
文字列 = 'default'
生成するテンプレートの名前。
-f
、--force
ブール値
質問なしでプロジェクトを生成します。有効にすると、各質問のデフォルトの回答が使用されます。
ローダーをスキャフォールディングします。
npx webpack loader [output-path] [options]
例
npx webpack loader ./my-loader --template=default
出力ディレクトリへのパス(例:./loader-name
)。
-t
、--template
文字列 = 'default'
テンプレートの種類。
プラグインをスキャフォールディングします。
npx webpack plugin [output-path] [options]
例
npx webpack plugin ./my-plugin --template=default
出力ディレクトリへのパス(例:./plugin-name
)。
-t
、--template
文字列 = 'default'
テンプレートの種類。
システムに関する情報を出力します。
npx webpack info [options]
例
npx webpack info --output json --addition-package postcss
-a
、--additional-package
文字列
出力に追加のパッケージを追加します。
例
npx webpack info --additional-package postcss
-o
、--output
文字列: 'json' | 'markdown'
指定された形式で出力を取得します。
例
npx webpack info --output markdown
webpack設定を検証します。
npx webpack configtest [config-path]
例
npx webpack configtest ./webpack.config.js
webpack設定ファイルへのパス。デフォルトは./webpack.config.js
です。
webpack開発サーバーを実行します。
npx webpack serve [options]
例
npx webpack serve --static --open
webpackを実行し、ファイルの変更を監視します。
npx webpack watch [options]
例
npx webpack watch --mode development
デフォルトでは、webpackには次のフラグが同梱されています。
フラグ / エイリアス | タイプ | 説明 |
---|---|---|
--entry | 文字列[] | アプリケーションのエントリポイント(例:./src/main.js ) |
--config, -c | 文字列[] | webpack設定ファイルへのパスを提供します(例:./webpack.config.js ) |
--config-name | 文字列[] | 使用する設定の名前 |
--name | 文字列 | 設定の名前。複数の設定をロードするときに使用されます。 |
--color | ブール値 | コンソールで色を有効にします |
--merge, -m | ブール値 | webpack-merge を使用して2つ以上の設定をマージします |
--env | 文字列[] | 関数である場合に設定に渡される環境 |
--define-process-env-node-env | 文字列 | process.env.NODE_ENV を指定された値に設定します |
--progress | ブール値、文字列 | ビルド中にコンパイルの進捗状況を出力します |
--help | ブール値 | サポートされているフラグとコマンドのリストを出力します |
--output-path, -o | 文字列 | webpackによって生成されたファイルの出力場所(例:./dist ) |
--target, -t | 文字列[] | ビルドターゲットを設定します |
--watch, -w | ブール値 | ファイルの変更を監視します |
--watch-options-stdin | ブール値 | stdinストリームが終了したら監視を停止します |
--devtool, -d | 文字列 | ソースマップが生成されるかどうかと、その方法を制御します。 |
--json, -j | ブール値、文字列 | 結果をJSONとして出力するか、ファイルに保存します |
--mode | 文字列 | webpackに渡すモードを定義します |
--version, -v | ブール値 | 現在のバージョンを取得します |
--stats | ブール値、文字列 | 統計の処理方法をwebpackに指示します |
--disable-interpret | ブール値 | 設定ファイルをロードするためのインタープリットを無効にします。 |
--fail-on-warnings | ブール値 | webpackからの警告時に、ゼロ以外の終了コードでwebpack-cliプロセスを停止します |
--analyze | ブール値 | webpack-bundle-analyzer プラグインを呼び出してバンドル情報を取得します |
--extends, -e | 文字列[] | 既存の設定を拡張します |
フラグ | 説明 |
---|---|
--no-color | コンソール上のすべての色を無効にします |
--no-hot | 設定でホットリロードが有効になっている場合は、ホットリロードを無効にします |
--no-stats | webpackによって出力されるコンパイル統計を無効にします |
--no-watch | ファイルの変更を監視しません |
--no-devtool | ソースマップを生成しません |
--no-watch-options-stdin | stdinストリームが終了しても監視を停止しません |
CLI v4およびwebpack v5以降、CLIはwebpackコアから設定スキーマ全体をインポートして、コマンドラインからほぼすべての設定オプションを調整できるようにします。
CLI v4でwebpack v5がサポートするすべてのコアフラグのリストはこちらです - リンク
たとえば、プロジェクトでパフォーマンスヒントを有効にする場合は、設定でこのオプションを使用します。コアフラグを使用すると、次のようにできます。
npx webpack --performance-hints warning
npx webpack [--config webpack.config.js]
設定ファイルでのオプションについては、設定を参照してください。
npx webpack --entry <entry> --output-path <output-path>
例
npx webpack --entry ./first.js --entry ./second.js --output-path /build
プロジェクトをビルドするためのエントリポイントとして機能するファイル名または名前付きファイル名のセット。複数のエントリを渡すことができます(すべてのエントリは起動時にロードされます)。以下は、CLIを介してエントリファイルを指定する複数の方法です -
npx webpack --entry-reset ./first-entry.js
npx webpack --entry-reset --entry ./first-entry.js
npx webpack --entry-reset ./first-entry.js ./other-entry.js
npx webpack --entry-reset --entry ./first-entry.js ./other-entry.js
バンドルされたファイルを保存するパス。設定オプションoutput.path
にマップされます。
例
プロジェクト構造が次のようになっている場合 -
.
├── dist
├── index.html
└── src
├── index.js
├── index2.js
└── others.js
npx webpack ./src/index.js --output-path dist
これにより、エントリがindex.js
としてソースコードがバンドルされ、出力バンドルファイルのパスはdist
になります。
asset main.js 142 bytes [compared for emit] [minimized] (name: main)
./src/index.js 30 bytes [built] [code generated]
./src/others.js 1 bytes [built] [code generated]
webpack 5.1.0 compiled successfully in 187 ms
npx webpack ./src/index.js ./src/others2.js --output-path dist/
これにより、両方のファイルを個別のエントリポイントとしてバンドルが形成されます。
asset main.js 142 bytes [compared for emit] [minimized] (name: main)
./src/index.js 30 bytes [built] [code generated]
./src/others2.js 1 bytes [built] [code generated]
./src/others.js 1 bytes [built] [code generated]
webpack 5.1.0 compiled successfully in 198 ms
CLIは、プロジェクトのパスにあるいくつかのデフォルト設定を探します。以下は、CLIによって選択される設定ファイルです。
これは、優先順位が昇順の検索です
例 - 設定ファイルの検索は、.webpack/webpackfile > .webpack/webpack.config.js > webpack.config.jsの順になります
'webpack.config',
'.webpack/webpack.config',
'.webpack/webpackfile',
cliで利用可能な基本的なコマンドとフラグをリストします
webpack help [command] [option]
とwebpack [command] --help
の両方がヘルプを取得するために有効です
npx webpack --help
# or
npx webpack help
cliでサポートされているすべてのコマンドとフラグをリストします
npx webpack --help=verbose
特定のコマンドまたはオプションのヘルプを表示します
npx webpack help --mode
インストールされているパッケージとサブパッケージのバージョンを表示します
使用しているwebpack
とwebpack-cli
のバージョンを確認するには、次のコマンドを実行します
npx webpack --version
# or
npx webpack version
これにより、次の結果が出力されます
webpack 5.31.2
webpack-cli 4.6.0
webpack-dev-server
がインストールされている場合は、そのバージョンも出力されます
webpack 5.31.2
webpack-cli 4.6.0
webpack-dev-server 3.11.2
webpack-cli
サブパッケージ(@webpack-cli/info
など)のバージョンを確認するには、次のようなコマンドを実行します
npx webpack info --version
これにより、次の結果が出力されます
@webpack-cli/info 1.2.3
webpack 5.31.2
webpack-cli 4.6.0
webpack-dev-server 3.11.2
設定ファイルを使用してソースをビルドします
デフォルトの1つであるwebpack.config.js
以外の別の設定ファイルを指定します。
npx webpack --config example.config.js
設定ファイルが複数の設定をエクスポートする場合は、--config-name
を使用して実行する設定を指定できます。
次のwebpack.config.js
を検討してください
module.exports = [
{
output: {
filename: './dist-first.js',
},
name: 'first',
entry: './src/first.js',
mode: 'development',
},
{
output: {
filename: './dist-second.js',
},
name: 'second',
entry: './src/second.js',
mode: 'development',
},
{
output: {
filename: './dist-third.js',
},
name: 'third',
entry: './src/third.js',
mode: 'none',
stats: 'verbose',
},
];
second
設定のみを実行する場合
npx webpack --config-name second
複数の値を渡すこともできます
npx webpack --config-name first --config-name second
--merge
を使用して、2 つ以上の異なる webpack 設定をマージできます。
npx webpack --config ./first.js --config ./second.js --merge
--extends
を使用して、既存の webpack 設定を拡張できます。
npx webpack --extends ./base.webpack.config.js
webpack の結果を JSON で出力
npx webpack --json
統計情報を JSON として保存したい場合は、以下を使用できます -
npx webpack --json stats.json
それ以外の場合、webpack はバンドル、チャンク、およびタイミングの詳細を示す一連の統計情報を出力します。このオプションを使用すると、出力は JSON オブジェクトになります。このレスポンスは、webpack の 分析ツール、または chrisbateman の webpack-visualizer、または th0r の webpack-bundle-analyzer で受け入れられます。分析ツールは JSON を取り込み、ビルドのすべての詳細をグラフィカル形式で提供します。
webpack 設定が 関数をエクスポートする場合、「環境」を渡すことができます。
npx webpack --env production # env.production = true
--env
引数は複数の値を受け付けます
呼び出し | 結果の環境 |
---|---|
npx webpack --env prod | { prod: true } |
npx webpack --env prod --env min | { prod: true, min: true } |
npx webpack --env platform=app --env production | { platform: "app", production: true } |
npx webpack --env foo=bar=app | { foo: "bar=app"} |
npx webpack --env app.platform="staging" --env app.name="test" | { app: { platform: "staging", name: "test" } |
上記で示したカスタマイズされた env
に加えて、webpack 設定内で使用される env
の下にいくつかの組み込みのものがあります。
環境変数 | 説明 |
---|---|
WEBPACK_SERVE | serve|server|s が使用されている場合は true 。 |
WEBPACK_BUILD | build|bundle|b が使用されている場合は true 。 |
WEBPACK_WATCH | --watch|watch|w が使用されている場合は true 。 |
これらの組み込み環境変数は、バンドルされたコード内ではアクセスできないことに注意してください。
module.exports = (env, argv) => {
return {
mode: env.WEBPACK_SERVE ? 'development' : 'production',
};
};
--node-env
オプションを使用して process.env.NODE_ENV
を設定できます。これはユーザーコードと webpack 設定の両方で利用できます。
npx webpack --node-env production # process.env.NODE_ENV = 'production'
webpack-cli v5+
の場合。
--node-env
のエイリアスで、process.env.NODE_ENV
を設定します。
npx webpack --define-process-env-node-env production # process.env.NODE_ENV = 'production'
パラメーター | 説明 | 入力タイプ | デフォルト |
---|---|---|---|
--config | 設定ファイルへのパス | 文字列[] | デフォルト設定 |
--config-name | 使用する設定の名前 | 文字列[] | - |
--env | 設定が関数の場合、設定に渡される環境 | 文字列[] | - |
webpack-bundle-analyzer
を使用して、webpack によって出力された出力バンドルを分析することもできます。--analyze
フラグを使用して、CLI 経由で呼び出すことができます。
npx webpack --analyze
webpack コンパイルの進捗状況を確認するには、--progress
フラグを使用できます。
npx webpack --progress
進捗ステップのプロファイルデータを収集するには、--progress
フラグの値として profile
を渡すことができます。
npx webpack --progress=profile
引数を Node.js プロセスに直接渡すには、NODE_OPTIONS
オプションを使用できます。
たとえば、Node.js プロセスのメモリ制限を 4 GB に増やす場合
NODE_OPTIONS="--max-old-space-size=4096" webpack
また、複数のオプションを Node.js プロセスに渡すことができます
NODE_OPTIONS="--max-old-space-size=4096 -r /path/to/preload/file.js" webpack
終了コード | 説明 |
---|---|
0 | 成功 |
1 | webpack からのエラー |
2 | 設定/オプションの問題または内部エラー |
環境変数 | 説明 |
---|---|
WEBPACK_CLI_SKIP_IMPORT_LOCAL | true の場合、webpack-cli のローカルインスタンスの使用をスキップします。 |
WEBPACK_CLI_FORCE_LOAD_ESM_CONFIG | true の場合、ESM 設定の読み込みを強制します。 |
WEBPACK_PACKAGE | CLI でカスタム webpack バージョンを使用します。 |
WEBPACK_DEV_SERVER_PACKAGE | CLI でカスタム webpack-dev-server バージョンを使用します。 |
WEBPACK_CLI_HELP_WIDTH | ヘルプ出力にカスタム幅を使用します。 |
WEBPACK_CLI_FORCE_LOAD_ESM_CONFIG=true npx webpack --config ./webpack.config.esm
CLI でカスタム webpack バージョンを使用します。package.json
に次の内容が含まれているとします。
{
"webpack": "^4.0.0",
"webpack-5": "npm:webpack@^5.32.0",
"webpack-cli": "^4.5.0"
}
webpack v4.0.0
を使用する場合
npx webpack
webpack v5.32.0
を使用する場合
WEBPACK_PACKAGE=webpack-5 npx webpack
TypeScript でネイティブ ESM を使用する場合 (つまり、package.json
で type: "module"
を使用する場合) にこのエラーが発生する可能性があります。
webpack-cli
は CommonJS
と ESM
の両方の形式で設定をサポートしており、最初に require()
を使用して設定をロードしようとします。'ERR_REQUIRE_ESM'
のエラーコード (このケースの特別なコード) で失敗すると、import()
を使用して設定をロードしようとします。ただし、import()
メソッドは、ローダーフックが有効になっていないと ( TypeStrong/ts-node#1007
で説明されているように) ts-node
では動作しません。
上記のエラーを修正するには、次のコマンドを使用してください
NODE_OPTIONS="--loader ts-node/esm" npx webpack --entry ./src/index.js --mode production
詳細については、TypeScript
での webpack 設定の作成に関するドキュメントを参照してください。