導語: webpack是一個JS應用打包器, 它將應用中的各個模塊打成一個或者多個bundle文件。藉助loaders和plugins,它能夠改變、壓縮和優化各類各樣的文件。它的輸入是不一樣的資源,好比:js、css、圖片、字體和html文件等等,而後將它們輸出成瀏覽器能夠正常解析的文件。javascript
當下最流行的模塊打包器 webpack 於2018年2月25日正式發佈v4.0.0版本,代號legato。從官方的 發佈日誌 來看, 本次大版本更新帶來了不少新特性更新和改善,這將會讓webpack的配置更加簡單。本文,筆者將會全面介紹webpack4的新特性及實踐。css
在發佈日誌裏的 Big changes 板塊,官方宣佈不在支持Node 4, Node 6 使用的是v8 5.0版本,支持93%的ES6語法。不難看出,這個決定是爲了更好的利用ES6語法的優點,來編寫出更加整潔和健壯的代碼。html
備註:當使用webpack4時,確保使用 Node.js的版本 >= 8.9.4。由於webpack4使用了不少JS新的語法,它們在新版本的 v8 裏通過了優化。java
另外一個大的改變是webpack須要設置mode屬性,能夠是 development 或 production。node
"scripts": {
"dev": "webpack --mode development",
"build": "webpack --mode production"
}
複製代碼
經過mode, 你能夠輕鬆設置打包環境。若是你將 mode 設置成 development,你將得到最好的開發階段體驗。這得益於webpack針對開發模式提供的特性:webpack
若是你將mode設置成了 production, webpack將會專一項目的部署,包括如下特性:git
webpack4刪除了CommonsChunkPlugin插件,它使用內置API optimization.splitChunks 和 optimization.runtimeChunk,這意味着webpack會默認爲你生成共享的代碼塊。其它插件變化以下:github
WebAssembly(wasm)會帶來運行時性能的大幅度提高,因爲在社區的熱度,webpack4對它作了開箱即用的支持。你能夠直接對本地的wasm模塊進行import或者export操做,也能夠經過編寫loaders來直接import C++、C或者Rust。web
webpack4支持5種模塊類型:json
0CJS的含義是0配置,webpack4受Parcel打包工具啓發,儘量的讓開發者運行項目的成本變低。爲了作到0配置,webpack4再也不強制須要 webpack.config.js 做爲打包的入口配置文件了,它默認的入口爲'./src/'和默認出口'./dist',這無疑對小項目而言是福音。
你所須要作的是在你的項目裏包含 ./src/index.js 文件。當在命令行裏執行 webpack 命令時,webpack會將該文件做爲項目的入口文件進行打包配置。
webpack4對插件系統進行了很多修改,提供了針對插件和鉤子的新API。變化以下:
更多關於新插件的工做原理能夠參考: 新的插件系統是如何工做的?
已經有很多關於webpack5的計劃正在進行中了,包括如下:
騰訊IVWEB團隊的工程化解決方案feflow已經開源:Github主頁:https://github.com/feflow/feflow
若是對您的團隊或者項目有幫助,請給個Star支持一下哈~