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

Javascript 在汇总配置中,如何使用moduleSideEffects导入副作用文件及其依赖项?,javascript,rollupjs,Javascript,Rollupjs,我的bundle中包含了许多我不想要的东西,因为它们被认为是有副作用的,而事实并非如此。承诺电话之类的。因此,我正在尝试将moduleSideEffects设置为一个函数*,该函数只将那些确实有副作用的文件标记为副作用。但是,我遇到了一个问题:如果所有的依赖项都不是副作用的,则汇总将不包括标记为副作用的文件 // a.js export function se() { console.log('Side effect'); } // b.js import { se } from 'b.

我的bundle中包含了许多我不想要的东西,因为它们被认为是有副作用的,而事实并非如此。承诺电话之类的。因此,我正在尝试将
moduleSideEffects
设置为一个函数*,该函数只将那些确实有副作用的文件标记为副作用。但是,我遇到了一个问题:如果所有的依赖项都不是副作用的,则汇总将不包括标记为副作用的文件

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

// b.js
import { se } from 'b.js';
se();
// main.js
import 'b.js';
我将
b.js
标记为副作用,因为我只想在包含
b.js
的地方包含
a.js
。现在考虑这两个可能的代码<代码>主体.js<代码>文件:

// main.js
import 'a.js';
正确地说,
a.js
不包括在捆绑包中,因为它没有副作用

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

// b.js
import { se } from 'b.js';
se();
// main.js
import 'b.js';
这里既不包括
a.js
也不包括
b.js
,即使
b.js
有副作用。当我将
a.js
标记为副作用时,它们都包括在内,但这意味着它也包括在
main.js的早期版本中

我很难确定这是否是一个bug或预期行为,或者如何解决它

汇总2.21.0


(*我之所以使用函数,是因为我无法获得相对、绝对或blob路径数组作为
ModulesDeeffects
,这是一个单独的问题。我显然缺少一些关于它们应该如何定义的内容。)

答案是
ModulesDeeffects:true
仅打开副作用测试,它不会将每个模块都标记为副作用。因此,如果没有副作用,正确地说,该文件仍然不会被包括在内