本文原文地址: https://auth0.com/blog/webpac...
第一次翻譯,不當之處,歡迎指正
官方已經發布了Webpack 4.0。有哪些新特性?有哪些改進?學着使用這個新版本,來構建更快的應用吧。javascript
2018年2月25日星期天,Webpack 4.0向公衆發佈。代號爲Legato,是Javascript模塊打包器的一個主要版本。繼3.0版本以後,4.0花了將近八個月的時間來發布。在這篇文章中,覆蓋了Webpack 4.0的主要新特性以及改進和棄用。java
Webpack是一個實用的JavaScript程序打包工具。它能把每一個模塊打包在至少一個文件中(一般只有一個文件),而且提供給瀏覽器運行。不管如何,Webpack不只僅是一個打包的工具。在各類loaders和plugins的幫助下,他能改變、縮小和優化文件,而後在瀏覽器上運行。它須要不一樣的資源,好比JavaScript、CSS、字體、圖片和HTML,而後將這些資源放進配置中,以便瀏覽器使用。Webpack的高明之處,在於它的總體。webpack
好了,接下來簡單的介紹下webpack。git
再也不支持Nodes.js 4。由於源碼已經更新到一個更高的ECMAScript版本。
Webpack的創始人之一,Tobias,建議用戶使用Node >= 8.94,以便使用最優的性能,是由於源代碼使用了JavaScript新特性。github
再見了,CommonChunkPlugin。臭名昭著(infamous)的CommonChunkPlugin被移除了,替代的是兩個新API:optimize.splitChunks和optimization.runtimeChunk。接下來我會解釋一下。web
Webpack 4對塊圖進行了巨大改進,並使用了新的塊拆分技術。在新的改進過程當中,誕生了新的插件---SplitChunksPlugin。這個插件可以自動識別哪些模塊須要拆分爲啓發式的(heuristics),哪些須要拆分爲塊。另外,它還有一些極好的特性,好比在異步chunks的高效,以及把vender拆分紅不一樣的vender塊。npm
默認狀況下,Webpack 4會默認爲你建立共享塊。它經過optimize.splitChunks進行配置。optimization.runtimeChunk: true選項只在運行時在每一個入口添加額外的chunks。json
Tobias有一篇文章,關於優化原理的案例api
WebAssembly(wasm) 是一個新的移動的、高效加載的可供web使用的工具。它確實很快,開發者社區也很快擁抱了這個技術。所以,Webpack 4 已經提供了wasm的支持。在Webpack 4,你能夠引入和導出任何一個Webassembly的模塊。同時,你也能夠寫一個loaders來直接引入C++、C和Rust。promise
Note: WebAssembly 模塊只能在異步chunks中使用。
Webpack 4.0如今支持如下五種模塊類型:
在此刻,對於這個新特性,我比任何都激動。webpack團隊引入了一個叫作mode的配置屬性來實現零配置(#oCJS)的模塊打包。mode能夠設置爲以下值:development和production。開箱即用,默認爲production。
production選項提供了一系列默認配置,它能夠:
development選項提供了一下默認配置,它能夠:
這裏能夠查看mode對配置的影響
注意:在webpack中沒有mode選項,會有錯誤提示。
到目前爲止,在webpack.config.js中須要定義一個entry point來爲app打包。然而,在Webpack 4.0,不須要定義這個erntry point,默認爲./src/index.js
並且,也不要定義輸出文件,缺省爲./dist/main.js
這種特性的重要意義在於處理小型項目的時候,不須要配置文件,只須要webpack。
Webpack 4不須要配置文件和入口文件。
Webpack 4 不須要任何配置文件,只要src/index.js文件。
Webpack的構建時間,和以前的主要版本相比,速度提高了98%。若是不信,能夠本身嘗試一下。你能夠這樣用:npm i webpack --save-dev
或者使用yarn:yarn add webpack --dev
在package.json中,你能夠看到devDependencies這一塊:
"webpack": "^4.0.0"
Webpack 3: 2405ms
webpack 4 :1388ms
Webpack 4.x 是3.x版本的2倍多。
Webpack 4配備了全新整改的插件系統。這是一個全新的API,這些插件和hooks的API有如下的配置:
Tobias文章:對新插件如何工做的理解。插件的方法是向後兼容的。
webpack的cli(command line interface)已經移動到webpack-cli了,若是要使用CLI,你須要安裝webpack-cli。
Webpack CLI文檔可讓你高效的開始。
廢棄和其餘的更新
Wepack 5正在進行幾項規劃。其中一些計劃包括:
除此以外:在Auth0 的Webpack和Javascript
(此部分講解Auth0中使用Webpack 4, 省略)
如今你已經瞭解到Weboack的新功能了。Webpack擁有不少的新特性和改進,Wepack 的團隊對Webpack 4.0的遷移和合並有詳細指導,在接下來的幾周和一月內將會推出。對Webpack很陌生?我寫了一篇模塊打包器的簡單介紹。Sean Larkin在Webpack Academy也有一些很是棒的Webpack課程。
你在開始使用Wepack 4.0了嗎?你的想法是什麼,在評論區留下你的見解吧。