在汇总配置中,如何使用 moduleSideEffects 导入副作用文件及其依赖项?

In Rollup config, how does one use moduleSideEffects to import side effect files AND their dependencies?

我的捆绑包中包含许多我不想要的东西,因为当它们不是时,它们被认为是有副作用的。无极电话之类的。因此,我正在尝试将 moduleSideEffects 设置为一个函数*,该函数*仅将那些真正具有副作用的文件标记为副作用。但是,我 运行 遇到了一个问题:如果所有依赖项都没有副作用,Rollup 将不会包含标记为副作用的文件。

// a.js
export function se() {
   console.log('Side effect');
}

// b.js
import { se } from 'b.js';
se();

我将 b.js 标记为副作用,因为我只想在包含 b.js 的地方包含 a.js。现在考虑这两个可能的 main.js 文件:

// main.js
import 'a.js';

这里 a.js 没有包含在捆绑包中,正确的是,因为它没有副作用。

// main.js
import 'b.js';

这里既不包括 a.js 也不包括 b.js,即使 b.js 有副作用。当我将 a.js 标记为副作用时,它们都包含在内,但这意味着它也包含在 main.js.

的先前版本中

我无法确定这是错误还是预期行为,或者如何解决它。

汇总 2.21.0

(* 我使用了一个函数,因为我无法获得一个相对、绝对或 blob 路径的数组来作为 moduleSideEffects,这是一个单独的问题。我显然遗漏了一些关于它们应该如何工作的信息被定义。)

答案是 moduleSideEffects: true 只打开 test 的副作用,它不会将每个模块标记为副作用。因此,如果没有副作用,该文件仍将正确地不包含在内。