我们的代码依赖于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”,它不能只包含其中的一部分。
为了使您的库实用,重要的是编写它们以导出许多小对象,而不是一个巨大的默认对象。
Smart猫小萌
TA贡献1911条经验 获得超7个赞
我在那里没有帐户,但如果他们以正确的方式实施 tree shaking,你可以尝试:
import { MessagesBubbleSquareText } from '@streamlinehq/streamline-regular';
window.console.log(MessagesBubbleSquareText);
或类似的东西。不知道导入是如何工作的,因为我找不到这个 npm 包的 gitrepo
添加回答
举报
0/150
提交
取消