參考:https://juejin.cn/post/6844904146915573773
什么是 vite ?
Vite,一個基于瀏覽器原生 ES imports 的開發(fā)服務(wù)器。利用瀏覽器去解析 imports,在服務(wù)器端按需編譯返回贸辈,完全跳過了打包這個概念纳决,服務(wù)器隨起隨用碰逸。同時不僅有 Vue 文件支持,還搞定了熱更新阔加,而且熱更新的速度不會隨著模塊增多而變慢花竞。針對生產(chǎn)環(huán)境則可以把同一份代碼用 rollup 打包。雖然現(xiàn)在還比較粗糙掸哑,但這個方向我覺得是有潛力的约急,做得好可以徹底解決改一行代碼等半天熱更新的問題。
注意到兩個點:
一個是 Vite 主要對應(yīng)的場景是開發(fā)模式苗分,原理是攔截瀏覽器發(fā)出的 ES imports 請求并做相應(yīng)處理厌蔽。(生產(chǎn)模式是用 rollup 打包)
一個是 Vite 在開發(fā)模式下不需要打包,只需要編譯瀏覽器發(fā)出的 HTTP 請求對應(yīng)的文件即可摔癣,所以熱更新速度很快奴饮。
因此,要實現(xiàn)上述目標(biāo)择浊,需要要求項目里只使用原生 ES imports戴卜,如果使用了 require 將失效,所以要用它完全替代掉 Webpack 就目前來說還是不太現(xiàn)實的琢岩。上面也說了投剥,生產(chǎn)模式下的打包不是 Vite 自身提供的,因此生產(chǎn)模式下如果你想要用 Webpack 打包也依然是可以的担孔。從這個角度來說江锨,Vite 可能更像是替代了 webpack-dev-server 的一個東西。
代碼主流程
dev:
plugins => resolveConfig =>?resolvePlugins
build:
cli_build=> build => doBuild =>?resolveConfig =>?resolvePlugins