1、命令參數很多時,配置文件更靈活
webpack提供的cli/命令支持很多的參數
(cli是命令行界面的縮寫),例如–mode,但命令很多的時候,我們會使用更加靈活的配置文件來控制webpack的行爲
默認情況下,webpack會讀取webpack.config.js文件作爲配置文件
,但也可以通過CLI參數--config來指定某個配置文件
#修改webpack的配置文件
npx webpack --config xx.js
2、webpack配置文件中必須是commonjs規範
配置文件中通過CommonJS模塊導出一個對象
(只能用commonjs標準,用es6模塊化導出會報錯!!!),對象中的各種屬性對應不同的webpack配置
module.exports={
//必須用commonjs標準
}
問題:webpack支持多種模塊化標準,爲什麼配置文件裏只能用commonjs導出,而不能用es6標準導出?
答案:
- webpack支持多種模塊化標準,指的是
開發時態構建依賴關係
的時候,無論使用commonjs/es6等標準的時候,都能識別 - 讀取webpack的配置文件的內容是在打包的過程中讀的,
打包的過程就是讀取webpack配置文件內容 並 運行
,打包過程是在node環境裏執行的,必須用commonjs - 讀取配置文件後,就要構建依賴關係,構建依賴關係時不會運行 開發時態的代碼
總結:1、webpack.config.js 裏的代碼是在編譯的過程中運行的代碼,運行環境是node環境,所以必須是commonjs 規範,2、而我們要打包的src下的源代碼,在打包的過程中是不會運行
的,只是把代碼內容讀出來,來分析依賴關係,最終形成打包結果, 3、最終運行的是打包結果
import xx from './xx';
//這句話在打包的時候不會運行,只是webpack用來識別依賴的,而打包完後dist裏的代碼纔會運行,dist裏面沒有模塊化代碼
注意:配置文件中的代碼,必須是有效的node代碼
打包過程中運行webpack.config.js,而src裏的代碼只是被讀出來,不會被運行
3、基本配置
當命令行參數與配置文件中的配置出現衝突時,以命令行參數爲準。
基本配置:
mode
:編譯模式,字符串,取值爲development或production,指定編譯結果代碼運行的環境,會影響webpack對編譯結果代碼格式的處理
entry
:入口,字符串,指定入口文件
output
:出口,對象
,指定編譯結果文件