繼 Node, React, Angular 版本失控之后,Webpack 的版本也坐上了??
在之前的文章里,就提到了因為年前版本回退的原因,我特意推遲了升級 webpack,就怕它又搞什么大新聞。
然而,沒想到還是中了圈套,webpack2 堅挺了還不到半年,就迎來了它的替代者。
就在一周前 webpack3 正式版發布了!
這次版本升級的主要原因有以下幾點:
- webpack 內部實現變化
- 新增了模塊串聯功能。之前,webpack 會為每個模塊創建各自的閉包,使用串聯功能將模塊連接到一起后,就只需為這真個模塊創建一個單獨的閉包,從而減少不必要的代碼
- 增加動態加載注釋,即可為動態加載定義 chunk 名
最最最重要的一點是不用修改任何配置就能從 webpack2 升級至 webpack3,這總算讓我上個月的升級沒有白費,至少 98% 的用戶是這樣。
既然,不用改代碼就能升級,又能大幅減小輸出文件大小,那就升一波看看效果。先看一眼升級前的打包結果,
before update
現在,通過 npm 命令默認安裝的已經是 3.0.0 的版本。升級的話,因為是大版本,所以別忘了先改 package.json 里面的依賴版本。
升級之后直接跑命令,順利打包。(謝天謝地,不是那 2%。)
after update
只是多了一個 warning。
DeprecationWarning: Chunk.modules is deprecated. Use Chunk.getNumberOfModules/mapModules/forEachModule/containsModule instead.
這是由一些 webpack plugin 引起的,比如:extract-text-webpack-plugin
等。不過,不用理它。首先,它不影響打包,其次,已經有人提了 pr。
結果看上去是不是和之前基本一樣?不要著急,那是因為還沒有用上模塊串聯的功能。開啟模塊串聯的功能需要在配置中簡單的加一個 plugin。
plugins: [
// ...
new webpack.optimize.ModuleConcatenationPlugin()
]
再看一眼結果,
build with module concatenation plugin
什么~app.js 只小了 3 kb(5%),廣告果然都是騙人的,不管國內還是國外...??(難道姿勢不對,升級了的朋友都說說小了多少)
這樣 webpack 3 升級就完成了,也用上了新特性,總得來說這次升級在文件大小以及打包時間上還是有所優化的,再加之升級的 effort 幾乎為 0,還是非常值得一試的。
PS:ESlint 也發布了 4.0 版本。
(前端界一個個都是版本大佬)