gpt4 book ai didi

javascript - 重新导出模块对 tree-shaking 有害吗?

转载 作者:数据小太阳 更新时间:2023-10-29 04:16:31 33 4
gpt4 key购买 nike

我和我的同事发生了争执,我们似乎无法从任何官方来源(MDN、webpack 文档等)找到答案。我的研究hasn't yielded much任何一个。好像有疑问even when it comes to importing

我们的设置是 Webpack、Babel 和典型的 React/Redux 应用程序。举个例子:

export * from './actions';
export * from './selectors';
export * from './reducer';

export { default } from './reducer';

这允许我将 Redux 模块分成逻辑部分,使代码更易于阅读和维护。

然而,我的一些同事认为 export * from 实际上可能会通过欺骗 webpack 来损害它的 tree-shaking 能力相信导出实际上只是被重新导出。

所以我的问题是,是否有任何事实证明或反驳这一点?

最佳答案

It is believed that export * from may harm webpack's tree-shaking capabilities, by tricking it into believing an export is used when it is in fact just being re-exported.

不,导入/导出声明除了为导出的变量设置别名外什么都不做,它们不算作“使用”。鉴于它们的语义,它们会被任何打包器专门跟踪,并且不会对 tree-shaking 产生不利影响。

即使是正确完成的重命名别名也不会破坏它:

export { X as Y } from '…';

import { X as Y } from '…';
export { Y }

import { X } from '…';
export { X as Y }

但语句中的使用将算作使用并中断(非复杂的)优化:

import { X } from '…';
export const Y = X; // avoid!

So my question is, are there any facts proving or disproving this?

您可以尝试一下,看看它是否有效。

关于javascript - 重新导出模块对 tree-shaking 有害吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54793402/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com