有一个模块用作命名空间(出于可测试性原因或其他原因):
export function bar() {}
export function baz() {
this.bar();
}
export function qux() {}
这可能被认为是一种不好的做法,因为baz
取决于上下文并且不能作为命名导出单独导入:
import * as Foo from './foo';
Foo.baz();
假设它this.bar
不会影响 tree-shaking 机制bar
并且qux
会被 tree-shaking 是否安全?
bar
是否有可能让捆绑器知道and之间的关系baz
,所以如果Foo.baz
正在使用,只有qux
摇树?
这个问题主要解决了 Webpack 摇树问题,但也欢迎对其他捆绑程序(Rollup)进行解释。