Javascript 如何在rollupjs中禁用树抖动

Javascript 如何在rollupjs中禁用树抖动,javascript,swift,javascriptcore,rollupjs,Javascript,Swift,Javascriptcore,Rollupjs,我正试图使用RollUp.js将几个javascript文件捆绑在一起,但当我这样做时,没有使用的类就会被删除。这个过程叫做树摇动,我想禁用它 我发现了,但似乎没有任何效果 // rollup.config.js let configuration = { output: { format: 'es', }, name: 'namename', input: './main.js', treeshake: false, // <-- disabling tre

我正试图使用RollUp.js将几个javascript文件捆绑在一起,但当我这样做时,没有使用的类就会被删除。这个过程叫做树摇动,我想禁用它

我发现了,但似乎没有任何效果

// rollup.config.js

let configuration = {
  output: {
    format: 'es',
  },
  name: 'namename',
  input: './main.js',
  treeshake: false, // <-- disabling tree shaking?
};

export default configuration;
通过这个设置,我调用
rollup--config
,它会生成一些空的内容。很明显,树震动正在发生,它正在移除基类,即使我导入了它

到目前为止,我发现的唯一解决方法是实际创建该类的实例,这是不可取的

// main.js
import Base from './Base.js';

export default function () {
    {   
        new Base();
    }
}
我的目标是将捆绑的javascript文件与JSContext一起使用。它将javascript作为字符串接收,然后根据需要调用方法

// suppose rollup.js produces a file called "product.js"

let s = String(contentsOfFile: "path/to/product.js")
let context = JSContext()!
context.evaluateScript(s)

context.evaluateScript("var b = new Base()")
context.evaluateScript("b.aMethod()")
但是由于树的震动,基类永远不会被放在product.js中

有没有办法阻止树摇晃


我为此提供了一个示例。

您的输入文件-
main.js
-需要导出外部世界需要访问的任何类或其他值:

//main.js
从“/Base.js”导入Base;
从“/SubB.js”导入SubB;
从“/SubA.js”导入SubA;
导出{Base,SubA,SubB};

您的输入文件-
main.js
-需要导出外部世界需要访问的任何类或其他值:

//main.js
从“/Base.js”导入Base;
从“/SubB.js”导入SubB;
从“/SubA.js”导入SubA;
导出{Base,SubA,SubB};

哦,哇!来自rollup.js创建者的响应!这是一个很大的帮助!当我使用您的建议时,它会生成一个javascript文件,其中包含导出中指定的所有类以及
export{Base,SubA,SubB}
。但是,JavaScriptCore似乎不支持关键字“export”。因此,我的解决方法是使用cjs格式内置的
export default function(){Base,SubA,SubB}
。with不使用“导出”作为关键字。噢,哇!来自rollup.js创建者的响应!这是一个很大的帮助!当我使用您的建议时,它会生成一个javascript文件,其中包含导出中指定的所有类以及
export{Base,SubA,SubB}
。但是,JavaScriptCore似乎不支持关键字“export”。因此,我的解决方法是使用cjs格式内置的
export default function(){Base,SubA,SubB}
。with不使用“导出”作为关键字。
// suppose rollup.js produces a file called "product.js"

let s = String(contentsOfFile: "path/to/product.js")
let context = JSContext()!
context.evaluateScript(s)

context.evaluateScript("var b = new Base()")
context.evaluateScript("b.aMethod()")