命令列介面

為了正確使用和更輕鬆地分發此組態,可以使用 webpack.config.js 組態 webpack。傳送至 CLI 的任何參數都會對應到組態檔案中的相應參數。

如果你尚未安裝 webpack 和 CLI,請閱讀安裝指南

命令

webpack-cli 提供了各種命令,讓使用 webpack 變得更加容易。預設 webpack 附帶

命令使用方式說明
buildbuild|bundle|b [entries...] [options]執行 webpack(預設命令,可以省略)。
configtestconfigtest|t [config-path]驗證 webpack 組態。
說明說明|h [指令] [選項]顯示指令和選項的說明。
資訊資訊|i [選項]輸出系統資訊。
初始化初始化|建立|c|新增|n [產生路徑] [選項]初始化新的 webpack 專案。
載入器載入器|l [輸出路徑] [選項]建立載入器的架構。
外掛外掛|p [輸出路徑] [選項]建立外掛的架構。
服務服務|伺服器|s [選項]執行 webpack-dev-server
版本版本|v [指令...]輸出 webpackwebpack-cliwebpack-dev-server 的版本號碼。
監控監控|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

Configtest

驗證 webpack 組態。

npx webpack configtest [config-path]

範例

npx webpack configtest ./webpack.config.js

設定檔路徑

Webpack 設定檔的路徑。預設為 ./webpack.config.js

Serve

執行 webpack dev 伺服器。

npx webpack serve [options]

範例

npx webpack serve --static --open

Watch

執行 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 合併兩個或多個組態
--env字串陣列當組態為函數時傳遞給組態的環境
--define-process-env-node-env字串process.env.NODE_ENV 設為指定的值
--progress布林值、字串在建置期間列印編譯進度
--help布林值輸出支援的標記和指令清單
--output-path, -o字串webpack 生成的檔案的輸出位置,例如 ./dist
--target, -t字串陣列設定建置目標
--watch, -w布林值監控檔案變更
--watch-options-stdin布林值當標準輸入串流結束時停止監控
--devtool, -d字串控制是否以及如何產生原始碼對應
--json, -j布林值、字串以 JSON 格式列印結果或將其儲存在檔案中
--mode字串定義要傳遞給 webpack 的模式
--version, -v布林值取得目前版本
--stats布林值、字串指示 webpack 如何處理統計資料
--disable-interpret布林值停用 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 核心匯入整個設定檔架構,以便從命令列調整幾乎每個設定檔選項。

以下是 webpack v5 支援的所有核心旗標清單,以及 CLI v4 - 連結

例如,如果您想在專案中啟用效能提示,您會在設定檔中使用 這個 選項,使用核心旗標,您可以執行 -

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

entry

一個檔案名稱或一組命名檔案名稱,作為建置專案的進入點。您可以傳遞多個進入點(每個進入點在啟動時載入)。以下是透過 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

要儲存已套件檔案的路徑。它會對應到設定檔選項 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

版本

顯示已安裝套件和子套件的版本

若要檢查您正在使用的 webpackwebpack-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

config

使用組態檔建置來源

指定與預設值之一的 webpack.config.js 不同的 組態 檔。

npx webpack --config example.config.js

config-name

如果您的組態檔匯出多個組態,您可以使用 --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

您可以使用 --merge 來合併兩個或更多不同的 webpack 組態

npx webpack --config ./first.js --config ./second.js --merge

extends

webpack-cli v5.1.0+

您可以使用 --extends 來延伸現有的 webpack 組態

npx webpack --extends ./base.webpack.config.js

json

將 webpack 的結果列印為 JSON

npx webpack --json

如果您想要將統計資料儲存為 json 而不是列印出來,您可以使用 -

npx webpack --json stats.json

在其他情況下,webpack 會列印出一組統計資料,顯示套件、區塊和計時詳細資料。使用此選項,輸出可以是 JSON 物件。此回應會被 webpack 的 分析工具、chrisbateman 的 webpack-visualizer 或 th0r 的 webpack-bundle-analyzer 所接受。分析工具會擷取 JSON 並以圖形化形式提供所有建置詳細資料。

環境選項

當 webpack 組態 匯出函式 時,可以傳遞「環境」給它。

env

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 之外,在 env 下還有內建的變數,可以在您的 webpack 組態中使用

環境變數說明
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

您可以使用 --node-env 選項設定 process.env.NODE_ENV,這對使用者程式碼和 webpack 組態都有效

npx webpack --node-env production   # process.env.NODE_ENV = 'production'

define-process-env-node-env

適用於 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

進度

您可以使用 --progress 旗標來查看任何 webpack 編譯的進度。

npx webpack --progress

若要收集進度步驟的剖析資料,您可以將 profile 作為值傳遞給 --progress 旗標。

npx webpack --progress=profile

傳遞 CLI 引數給 Node.js

若要直接傳遞引數給 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組態/選項問題或內部錯誤

CLI 環境變數

環境變數說明
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

WEBPACK_PACKAGE

在 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

疑難排解

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: ./webpack.config.ts 的未知檔案副檔名「.ts」

在 TypeScript 中使用原生 ESM 時,可能會遇到此錯誤(即 package.json 中的 type: "module")。

webpack-cli 支援 CommonJSESM 格式的組態,它首先嘗試使用 require() 載入組態,一旦它因錯誤代碼 'ERR_REQUIRE_ESM'(此案例的特殊代碼)失敗,它將嘗試使用 import() 載入組態。但是,import() 方法在未啟用 載入器掛鉤 的情況下無法與 ts-node 搭配使用(詳述於 TypeStrong/ts-node#1007)。

若要修正上述錯誤,請使用下列指令

NODE_OPTIONS="--loader ts-node/esm" npx webpack --entry ./src/index.js --mode production

如需更多資訊,請參閱我們的文件,了解如何使用 TypeScript 編寫 webpack 組態

17 貢獻者

anshumanvrishabh3112snitin315evenstensbergsimon04tbroadleychenxsanrenciremadhavarshneyEugeneHlushkobyzykwizardofhogwartsEslamHikosmelukovanikethsahajamesgeorge007burhanuday