說 Vite 兼容 Rollup 插件這句話本來就是不對的。
Vite 打生產包會完全調用 Rollup (rollup.rollup() rollup.generate() or rollup.write()) 來打包普舆。
Vite dev server 模式只定義了 options滚朵,buildStart摘仅,resolveId最疆,load陷嘴,transform 等 build 階段的鉤子乎赴,這些鉤子完全模仿了 rollup 對應鉤子的行為,會在 dev server 中各個階段調用真慢。 output (輸出) 階段的鉤子一個都沒有定義毅臊。 所以如果一個 Rollup 插件定義了 generate 等輸出階段的鉤子或除上面列舉的以外的鉤子那么 Vite 是不能兼容的。(說的是 dev 模式黑界,生產模式由于是直接調用 Rollup 所以肯定完全兼容 Rollup 插件管嬉,也談不上兼容皂林,直接調用而已)
Vite dev server 只處理了 build 階段,因為 dev server 不需要打 bundle 所以不需要 output 階段宠蚂。即 Vite 其實只做了這么一點點創(chuàng)新而已式撼,vite 主要解決的也是 webpack dev server 每次都打 bundle 編譯慢的問題童社。
Vite 其實做的事情不多求厕,有一點創(chuàng)新但也就那樣。我如果用 Rust 或 C/C++ 重做一套前端打包工具會真正革了現在各個 JS 打包工具的命扰楼。已經有很多人開始用 Rust 這么干了呀癣,如 swc 等。我根本不用區(qū)分什么 dev ,生產弦赖,我就像 webpack 一樣每次都打 bundle 都能比 vite 快 100 倍项栏,因為 Rust ,C/C++ 加多線程本來就比 JS 快 100 倍蹬竖。