有没有办法删除不必要的"要求(.../'import "..." ' 语句(使用汇总)



我正在创建一个库,我们将其命名为share,将在其他服务中使用,并使用Rollup.js捆绑库

share是一个由多个服务使用的共享库,因此我需要能够对库进行树摇。发生的事情是……假设我有依赖于shareservice Aservice B

  • service A使用googleapis,这是shared使用的依赖项之一,然而,googleapis是对等依赖项,是service A的真正依赖项。

  • service B根本不使用googleapis,并且不是一个依赖项。使用googleapisshared中甚至没有函数包含在service B中。


在绑定时,service Aservice B只包含所需的函数/属性。我遇到的问题是在service B上,当我查看生成的包时,有以下行…

service A的生成包

// ...
var path = require('path');
var googleapis = require('googleapis'); // works as expected
// ...

service B的生成包

// ...
var path = require('path');
require('googleapis'); // this line is causing my issue
// ...

简单地在service B上删除require('googleapis')确实解决了这个问题,因为这个库根本不使用,甚至是全局的,然而,这只是这个共享库的开始,我宁愿不手动删除不必要的要求,或者编写一个实用程序来剥离它们,如果有一个简单的修复这个问题。

我认为会有一些设置,我可以传递给treeshake,但我还没有找到我想要的。

我知道是哪个属性导致了这个问题。

treeshake.moduleSideEffects


我的解决方案是…

...
treeshake: {
moduleSideEffects: (id) => !id.includes('googleapis')
}
...

,我需要包含它以防止绑定空的require语句

相关内容

  • 没有找到相关文章

最新更新