如何在 webpack tree shaking 中排除自定义构造函数?

How to exclude a custom constructor in webpack treeshaking?

我在 JS 文件中有以下代码

(() => {
    const Abc = (ab) => {
        this.ab = ab;
        this.k = () => {
            console.log(this.ab);
        };
    };
    window.MySpace = window.MySpace || {};
    window.MySpace.abc = new Abc('some var');
})();

我使用 webpack 5 作为我的打包器。在这个构造函数之后加载的另一个文件中,当我尝试使用 window.Myspace.abc.k 时,它抛出了一个错误。通过一些调查,我能够理解输出文件没有 k,这是 TreeShaking 机制的结果。

如何告诉 webpack 在 treeshaking 期间排除这个 constructor/method?

window.MySpace.abc = new Abc('some var');

Abc 是一个箭头函数。箭头函数不能用作构造函数,因此这行代码抛出异常,因此没有任何内容分配给 window.MySpace.abc.

要解决此问题,请使用常规函数:

function Abc(ab) {
  this.ab = ab;
  this.k = () => {
    console.log(this.ab);
  };
};