我正在尝试使用RollUp.js将几个javascript文件打包在一起,但是当我这样做时,未使用的类会被删除。这个过程被称为tree shaking,我想禁用它。
我已经找到了这个,但是似乎没有任何效果。
// rollup.config.js
let configuration = {
output: {
format: 'es',
},
name: 'namename',
input: './main.js',
treeshake: false, // <-- disabling tree shaking?
};
export default configuration;
我在配置中添加了
treeshake: false
,但似乎没有任何效果。应该把它放在其他地方吗?这是我正在尝试整合的文件。
// Base.js
export default class Base {
aMethod() {
return "Hello";
}
}
// main.js
import Base from './Base.js';
使用这个设置,我调用rollup --config
,但它生成了一个空的结果。显然,树摇动正在发生,它正在删除Base类,尽管我已经导入它。
到目前为止,我找到的唯一解决方法是实际创建该类的一个实例,这是不可取的。
// main.js
import Base from './Base.js';
export default function () {
{
new Base();
}
}
我的目标是使用JSContext捆绑的javascript文件。它将把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中。
有没有一种方法可以禁用树摇?
我为此包含了一个示例项目。
export {Base, SubA, SubB}
。然而,看起来JavaScriptCore不支持关键字“export”。因此,我的解决方法是使用内置的cjs格式export default function(){Base, SubA, SubB}
,它不使用“export”作为关键字。 - DerrickHo328