Javascript 如何在rollupjs中禁用树抖动
我正试图使用RollUp.js将几个javascript文件捆绑在一起,但当我这样做时,没有使用的类就会被删除。这个过程叫做树摇动,我想禁用它 我发现了,但似乎没有任何效果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.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()")