亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們的第三方 javascript 依賴項導出了一個 50KB 的默認對象

我們的第三方 javascript 依賴項導出了一個 50KB 的默認對象

動漫人物 2022-11-27 15:51:44
我們的代碼依賴于streamlinehq/streamline-regularjavascript 包。這個包既是第三方的又是專有的,這意味著我們不能分叉它也不能編輯它。我們有這樣的debug.js示例代碼:import MessagesSpeechBubbles from '@streamlinehq/streamline-regular/lib/messages-chat-smileys/MessagesSpeechBubbles'; window.console.log(MessagesSpeechBubbles.MessagesBubbleSquareText);查看 MessagesSpeechBubbles js 文件,它正在為每種不同類型的對話氣泡導出帶有 SVG 數據的大量默認對象,縮小后總計 50kb。作為參考,請參閱捆綁分析的輸出:有什么方法可以部分導入或引入這個對象,這樣在被webpack打包后,只有MessagesBubbleSquareText對象的一部分被包含在最終的包中?本質上,有沒有什么方法可以通過只包含我們實際使用的 SVG 數據來縮小我們的生產包?
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

在 javascript 中沒有辦法用某種 tree shaking 來分割對象。Tree shaking 只能使生產包中只包含必要的對象和函數,但如果您導入了一個巨大的“mega object”,它不能只包含其中的一部分。

為了使您的庫實用,重要的是編寫它們以導出許多小對象,而不是一個巨大的默認對象。


查看完整回答
反對 回復 2022-11-27
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

我在那里沒有帳戶,但如果他們以正確的方式實施 tree shaking,你可以嘗試:


import { MessagesBubbleSquareText } from '@streamlinehq/streamline-regular';

window.console.log(MessagesBubbleSquareText);

或類似的東西。不知道導入是如何工作的,因為我找不到這個 npm 包的 gitrepo


查看完整回答
反對 回復 2022-11-27
  • 2 回答
  • 0 關注
  • 84 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號