在汇总配置中,如何使用 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 的副作用,它不会将每个模块标记为副作用。因此,如果没有副作用,该文件仍将正确地不包含在内。
我的捆绑包中包含许多我不想要的东西,因为当它们不是时,它们被认为是有副作用的。无极电话之类的。因此,我正在尝试将 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 的副作用,它不会将每个模块标记为副作用。因此,如果没有副作用,该文件仍将正确地不包含在内。