傳說中零配置
首先初始化一個項目
mkdir webpack4.x
cd webpack4.x
npm init
根目錄下新建一個webpack.config.js ,然后新建一個src/index.js, package.json文件中新增兩條命令
"dev": "node_modules/.bin/webpack-dev-server --mode development --open --progress --hot --hotOnly --config ./webpack.config.js",
"build": "node_modules/.bin/webpack --mode production --progress --config ./webpack.config.js"
安裝依賴(我這里用的的是比較新的)
npm install webpack webpack-cli -D
"webpack": "^4.8.1",
"webpack-cli": "^2.1.3",
開發(fā)環(huán)境
npm run dev
生產(chǎn)環(huán)境
npm run build
webpack4.0傳說中的零配置,不是說不需要配置,而是默認不需要配置入口和出口,提前給我們設(shè)置了默認值
entry的默認值是 src/index.js,必須是index.js
output的默認值是dist/main.js
下面有幾點注意項:
- 4.x的webpack,必須配合著webpack-cli
npm install webpack-cli -D
- package.json 中 最好使用我們安裝的依賴
node_modules/.bin/webpack-dev-server
webpack4.x的默認配置可以在如下路徑找到:
node_modules/webpack/lib/WebpackOptionsDefaulter.js
mode意義更為明確
新增 mode 配置,可選擇而且必須設(shè)置為 development 或 production,它們的主要區(qū)別是 development 更重視構(gòu)建時間,production 更重視尺寸。并且,有了 mode 之后,無需配置即可啟動,實現(xiàn)了零配置。
棄用CommonsChunkPlugin
使用 optimize.splitChunks 和 optimization.runtimeChunk 替代 CommonsChunkPlugin?,F(xiàn)在我們可以更簡單的實現(xiàn)代碼分割和提取公共代碼等操作。
開箱即用WebAssembly
支持 WebAssembly,現(xiàn)在可以導入入 WebAssembly 支持的其它語言文件,在運行時的性能得到大幅度提升
支持多種模塊導入引用
支持 CommonJS, AMD, ESM 等模塊系統(tǒng)。
- javascript/auto: 在webpack3里,默認開啟對所有模塊系統(tǒng)的支持,包括CommonJS、AMD、ESM。
- javascript/esm: 只支持ESM這種靜態(tài)模塊。
- javascript/dynamic: 只支持CommonJS和AMD這種動態(tài)模塊。
- json: 只支持JSON數(shù)據(jù),可以通過require和import來使用。
- webassembly/experimental: 只支持wasm模塊,目前處于試驗階段。