什麼是增量編譯
① eclipse怎麼設置增量編譯
Eclipse預設就是增量編譯,有兩種方式,在保存的時候自動編譯,或者把保存時自動編譯選項去掉,需要編譯的時候按Ctrl+B即可。
求採納。
② 從 Webpack 到 Snowpack, 編譯速度提升十倍以上——TRPG Engine遷移小記
原文地址: http://moonrailgun.com/posts/74598ef5/
TRPG Engine 經過長久以來的迭代,項目已經顯得非常臃腫了。數分鍾的全量編譯, 每次按下保存都會觸發一次 10s 到 1m 不等的增量編譯讓我苦不堪言, 龐大的依賴使其每一次編譯都會涉及很多文件和很多包,長時的編譯時間大大降低了開發效率與迭代速度。
經過一段時間的考察,我選擇了 Snowpack 作為解決方案。與 Webpack 不同的是,除了第一次的全量編譯以外, Snowpack 的增量編譯不會涉及到龐大的 node_moles 文件夾, 准確來說只會編譯變更文件本身。甚至於如果沒有對依賴進行變更,下次的全量編譯會直接動用之前編譯的文件緩存,不需要花時間等待 node_moles 的編譯。
為什麼會這么快?這是由於 Snowpack 本身的實現與設計哲學有關的。相比 Webpack , Snowpack 利用了現代瀏覽器的本身的 mole 系統,跳過復雜的模型之間的組織編譯過程而只關注於變更文件本身的編譯,這樣當然快了。
拿 Snowpack 官方的一張圖來說:
snowpack 的最我譯單位是文件,而 webpack 的最我譯單位為 chunk , 而 chunk 還需要額外的計算, 不論是編譯部分還是編譯後的組裝部分。snowpack的設計邏輯天生決定了她的速度。
優化前(使用 webpack ):
全量編譯:
增量編譯:
全量請求用時:
優化後(使用 snowpack ):
全量編譯:
增量編譯:
(看不到編譯用時,但是體感在1s內. 而且該效果在電腦運行其他應用時更加顯著)
全量請求用時:
以上測試是保證電腦在空閑時間,且保存與操作內容為同一文件
該用時已經是平時操作的最快時間,為此我的MBR重啟了一次強制清空了swap空間, 實際表現會更加顯著
因為文件依賴於瀏覽器的耗時,而瀏覽器需要串列請求依賴,因此耗時會更加長
但實際使用中使用snowpack會更加優秀。因為其相比webpack會大大節約電腦資源。在webpack編譯時會佔用大量的電腦資源,會影響到其他操作
TRPG Engine 算是非常經典的 Webpack 應用了, 使用了各種Loader。光通用配置就有250+行,各種優化配置,各種 alias。等等長時間迭代積攢下來的配置,因此毫不意外的會遇到很多問題與坑。
以下是我遇到的問題與解決方案:
Snowpack雖然作為一個新興的打包工具,目前尚不是非常完善, 功能也沒有webpack這樣豐富與齊全。但是它的新的打包設計對於有一定規模的前端應用還是非常優秀的。能極大提升開發效率。不失為一種好的解決方案。當然最後輸出還是需要使用webpack對其進行一定的優化,畢竟原生的mole支持目前瀏覽器的支持度還沒有達到覆蓋一個理想的地步 https://caniuse.com/es6-mole
最後這是我最後提交的 pr